Avatar billede ladyhawke Novice
03. februar 2009 - 15:06 Der er 14 kommentarer og
1 løsning

Opret window og genbrug hvis åbent... (fejler i FireFox)

Har en funktion a la denne:

var pp=null;                       
function PrintPreview()
{
  var landekode = "<%=serverLang%>";
  if(landekode=="dk" || landekode=="DK") { description = tinyMCE.get('taText').getContent(); }
  else { description = "No TinyMCE Found"; }       

  //Creating new page or reusing the old window, if already there...
  if (pp == null || pp.closed)
  {                   
      pp = window.open("", "_blank", "toolbar=0, status=no, location=0, menubar=0, scrollbars=yes, resizable=yes, width=600, height=500");
  }               
  pp.focus();
               
  //Adding HTML opening tag with <HEAD> … </HEAD> portion
  pp.document.writeln('<HTML><head><title><%=bc.GetString("GotoPreview")%></title>');       

(render lidt mere tekst, men fejlen opstår allerede med dette )
}

Det her fejler, med en pp.document = null, når jeg har loadet siden 1 gang (den render ikke siden, bare et hvidt vindue og hvis man kigger i koden er det et helt tom HTML dokument den render (altså titlen er heller ikke med)... Nogen ide til hvorfor den ikke vil render?
Avatar billede majbom Novice
03. februar 2009 - 15:44 #1
jeg ved ikke om det gør en forskel, men du lukker hverken head eller html tags
Avatar billede ladyhawke Novice
03. februar 2009 - 18:05 #2
jo jeg gør, det er koden i (render lidt mere tekst....), men det er irrelevant, da koden virker fint uden pp.document.writeln's overhovedet, men så snart bare 1 af dem tilføjes, så kløjs den i det...

Koden virker i IE, så jeg har ingen clue derfra...
Avatar billede majbom Novice
03. februar 2009 - 19:08 #3
prøv at tilføj:

pp.document.close();

efter din writeln()
Avatar billede ladyhawke Novice
04. februar 2009 - 08:40 #4
Har prøvet med pp.document.close(), det ændrer desværre ikke ved det tomme html dokument...
Avatar billede olebole Juniormester
04. februar 2009 - 10:31 #5
<ole>

Når du giver vinduet et navn ved åbning (det andet argument i en window.open), vil det samme vindue genbruges hvergang du forsøger at åbne et vindue ved samme navn. Al dit 'genbrugshalløj' er med andre ord ganske overflødigt.

Til gengæld er det vigtigt at åbne og lukke selve dokumentet:

function PrintPreview()
{
  var landekode = "<%=serverLang%>";
  if(landekode=="dk" || landekode=="DK") { description = tinyMCE.get('taText').getContent(); }
  else { description = "No TinyMCE Found"; }       
               
  pp = window.open("", "_blank", "toolbar=0, status=no, location=0, menubar=0, scrollbars=yes, resizable=yes, width=600, height=500");             
  pp.focus();
               
  //Adding HTML opening tag with <HEAD> ... </HEAD> portion
  pp.document.open("text/html", "replace"); 
  pp.document.writeln('<HTML><head><title><%=bc.GetString("GotoPreview")%></title>');       
  pp.document.close();
 
(render lidt mere tekst, men fejlen opstår allerede med dette )
}

/mvh
</bole>
Avatar billede olebole Juniormester
04. februar 2009 - 10:32 #6
- og mellemrum mellem de enkelte properties i tredie argument får en del browsere til at fejle:

pp = window.open("", "_blank", "toolbar=0,status=no,location=0,menubar=0,scrollbars=yes,resizable=yes,width=600,height=500");
Avatar billede ladyhawke Novice
04. februar 2009 - 11:28 #7
olebole: som i et tidligere indlæg: jeg har allerede document.close med...

Retter lige det med mellemrum i attributterne, den har jeg vist ikke prøvet.
Avatar billede ladyhawke Novice
04. februar 2009 - 12:27 #8
den hjalp heller ikke...

Mht. genbrug: koden blev til ad flere omgange, men "genbrugen" gav nogle fejl, det er derfor der bliver testet for om vinduet er lukket (det er et ikke-modalt vindue - med vilje) og derfor sker det at nogen lader vinduet stå og andre lukke det. For dem der lader vinduet stå, skal indholdet jo stadig opdateres...
Avatar billede olebole Juniormester
04. februar 2009 - 13:06 #9
Ja, og det bliver det også, som jeg beskrev det  =)
Avatar billede olebole Juniormester
04. februar 2009 - 13:18 #10
Prøv evt. dette, der virker fint:

<script type="text/javascript">
function foo() {
  var pp = window.open("", "otto", "toolbar=0,status=no,location=0,menubar=0,scrollbars=yes,resizable=yes,width=600,height=500");

  pp.document.open();
  pp.document.write("<html><head><title>Blabla</title></head><body>"+new Date().getTime()+"</body></html>");
  pp.document.close();
  pp.focus();

}
</script>

<button onclick="foo()">TEST</button>
Avatar billede ladyhawke Novice
04. februar 2009 - 14:57 #11
hmmm, af en eller anden grund spiller det ikke i mit tilfælde... Jeg må lige forske lidt mere i det, min kode ligner pt. dit eksempel, men jeg får stadig en "fin" hvid side i FF
Avatar billede ladyhawke Novice
04. februar 2009 - 15:08 #12
du har ret i at jeg kan undvære det snask mht. "genbrug", det virker fint i IE nu også (rettet til, sådan som du har indikeret ovenfor). Der må bare være noget jeg har overset i forhold til FireFox
Avatar billede olebole Juniormester
04. februar 2009 - 15:46 #13
For mig funker koden også fint i Firefox  =)
Avatar billede ladyhawke Novice
13. august 2009 - 09:12 #14
Læg gerne et svar. Jeg har lidt opgivet at arbejde yderligere med problematikken, men jeres input har været rigtig gode og skulle også bringe det til at virker :o)
Avatar billede olebole Juniormester
13. august 2009 - 09:29 #15
;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester