Avatar billede purup Nybegynder
20. august 2007 - 09:19 Der er 26 kommentarer og
1 løsning

Hvorfor hedder mit popup vindue Untitled?

Hej Eksperter
Jeg åbner et popup med JavaScript. Alt fungerer fint med undtagelse af titlen på vinduet som bliver "Untitled". Hvorfor???
(jeg er på Safari 2.0)


function showGallery(){
    windowLeft = parseInt((parent.window.innerWidth - 800) / 2); //add top and left browser values
    windowTop  = parseInt((parent.window.innerHeight - 550) / 2); 
    var gallery = window.open('','','width=800,height=550,top=' + windowTop + ',left=' + windowLeft + ',menubar=0,toolbar=0,status=0,scrollbars=0,resizable=0');   
    content = ''
        + '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
        + '<html>'
        + '        <head>'
        + '            <link href="gallery.css" rel="stylesheet" type="text/css" />'
        + '            <script language="Javascript" src="gallery.js" type="text/javascript"></script>'
        + '            <title>SOMETHING WRONG HERE!!!</title>'
        + '        </head>'
        + '        <body>'
        + '            <div id="pleaseWait">Please wait</div>'
        + '        </body>'
        + '</html>';
    gallery.document.write(content);
    gallery.document.close();
};
Avatar billede fennec Nybegynder
20. august 2007 - 09:32 #1
Det virker fint i IE, FF og OP. Så det må være en "fejl" i Safari.
Avatar billede olebole Juniormester
20. august 2007 - 13:47 #2
<ole>

Hvis browserne overhovedet understøttede XHTML, ville scriptet få browseren til at gå ned ved udtrykket: document.write. Det er komplet og aldeles ubrugeligt sammen med XHTML ... på samme måde som innerHTML!

Hvad der er årsagen til, Safari ikke kan udskrive dokument-titlen, ved jeg ikke - men det er da i udgangspunktet bemærkelsesværdigt, du overhovedet kan holde en browser i live under afviklingen af scriptet  =)

/mvh
</bole>
Avatar billede fennec Nybegynder
20. august 2007 - 14:02 #3
olebole >>
Siden, som denne funktion ligger på, behøver jo ikke være XHTML :o)
Men det er nok meget sandsynlig at det er...
Avatar billede olebole Juniormester
20. august 2007 - 14:05 #4
- wanna bet?  ;D
Avatar billede olebole Juniormester
20. august 2007 - 14:11 #5
Nu betyder det egentlig ikke så meget, da der er tale om XHTML 1.0 Transitional, som ganske enkelt ikke _kan_ parses som andet end HTML - og som _aldrig_ vil blive parsed som XHTML ... men det kan godt undre, hvorfor folk dog så bruger den  =)
Avatar billede purup Nybegynder
21. august 2007 - 11:13 #6
Øh... nu ved jeg slet ikke hvad xhtml er!
(jeg er egentlig mest til actionscript på fritidsniveau)

Jeg bygger et portfolio. Det ligger på www.purup.com/test
(det er ret simpelt og består bare af index.html, index.css, index.js, gallery.css, gallery.js)

Den omtalte funktion ligger i index.js - hvad skal jeg gøre hvis document.write ikke er godt ?
I gallery.js bruger jeg innerhtml (sammen med document.createElement)  hvad gør jeg der ?

(alt fungerer fint i safari (undetagen det med title). jeg er ikke nået til at teste i explorer endnu)
Avatar billede fennec Nybegynder
21. august 2007 - 11:17 #7
Du skal bare bruge ganske almindelig HTML4.1.
Avatar billede fennec Nybegynder
21. august 2007 - 11:21 #8
Så brug en af disse i stedet for XHTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">

http://www.w3.org/QA/2002/04/valid-dtd-list.html
Avatar billede fennec Nybegynder
21. august 2007 - 11:48 #9
Når du har rettet din DTD så send siden igennem en validator for at finde fejl:
http://validator.w3.org/

På nuværende tidspunkt har du mange fejl, fordi du ikke har lukket nogle <img> og bruger onLoad (Fejler pga XHTML DTD). Ved at ændre DTD'en til almindelige HTML, skulle de fejl gerne forsvinde af sig selv. Da det er lovligt at bruge onLoad og <img> tags ikke skal lukkes i HTML.
Avatar billede purup Nybegynder
21. august 2007 - 12:40 #10
...og hvis jeg gør det er det ok at bruge document.write og innerhtml?
Avatar billede fennec Nybegynder
21. august 2007 - 12:59 #11
Ja.
Avatar billede olebole Juniormester
21. august 2007 - 13:00 #12
Nej, innerHTML er det _aldrig_ okay at bruge. InnerHTML er et levn fra midten af 90'erne, hvor der ikke var andre muligheder for at ændre en side indhold.

InnerHTML har aldrig været valid i nogen standard og bliver det heller aldrig. InnerHTML ødelægger dine muligheder for begavet scripting i dokumentet, da den sletter programmatiske referencer til og fra det fragment, innerHTML bruges på.

InnerHTML har nogenlunde samme oprindelse som layout med kæmpe tabel-helveder og hundredvis af spacer-giffer - men er langt værre og mere ødelæggende
Avatar billede olebole Juniormester
21. august 2007 - 13:00 #13
Du kan bruge innerHTML til at teste med - men det bør aldrig ramme en seriøs side på WWW
Avatar billede fennec Nybegynder
21. august 2007 - 13:10 #14
... Tænkte nok olebole kom med en "rant" (ikke ondt ment ole) :o)

Men som han også siger, burde/skal man ikke bruge innerHTML. Har selv lave mill af sider (lidt overdrivelse) efterhånden, og har endnu ikke haft brug for den. Synes dog ikke det skal forhindre dig i at bruge den, men der findes altid et alternativ...
Avatar billede olebole Juniormester
21. august 2007 - 13:37 #15
fennec >> det er helt okay  ;D

Jeg har til gengæld ikke helt orden i min samvittighed. Jeg har desværre skæmmet WWW med brug af innerHTML adskillige gange, men er blevet væsentligt klogere. Ikke mindst da jeg pludselig opdagede, hvormeget jeg havde ødelagt mine muligheder for at arbejde videre på 'gode', gamle koder!
Avatar billede fennec Nybegynder
21. august 2007 - 13:49 #16
Men for at vende tilbage til ?'et, så er jeg rigmelig sikker på at dit vindue stadig vil hedde "untitled", selv om du har lavet de ændringer vi har sagt.

Det må være en fejl i Safari, og derfor kan du ændre alt det du vil. Fejlen vil stadig være der...
Avatar billede olebole Juniormester
21. august 2007 - 14:51 #17
Vi kunne jo prøve et lille 'hack'  :)

function showGallery(){

    ... en hel masse kode ...

    gallery.document.write(content);
    gallery.document.close();
    gallery.document.title = "Bare en lille test";
};
Avatar billede purup Nybegynder
21. august 2007 - 19:07 #18
Det lille hack virker desværre ikke.

Jeg er nu på:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
og siden validerer med 1 fejl på http://validator.w3.org/: there is no attribute "ONLOAD" (i img tag) hvordan/hvornår kan jeg så bruge onload på img?

...og hvad gør jeg i stedet for innerhtml?
Avatar billede purup Nybegynder
21. august 2007 - 19:15 #19
...og der så ulemper ved at bruge loose.dtd ? frem for strict.dtd?
Avatar billede olebole Juniormester
21. august 2007 - 19:17 #20
onload, onerror og onabort er ikke valide events på et img-element - og har vist aldrig været det  :)

Der er ingen ulemper ved Transitional i forhold til Strict. Strict ligner XHTML lidt mere, men det har absolut ingen praktisk betydning hvilken af de to, du benytter
Avatar billede olebole Juniormester
21. august 2007 - 19:22 #21
Kan du måske:

function showGallery(){

    ... en hel masse kode ...

    gallery.document.write(content);
    gallery.document.close();

    var oNewTitle = gallery.document.createElement("title");
    var oHead = gallery.document.getElementsByTagName("head")[0];
    oHead.replaceChild(oNewTitle, oHead.getElementsByTagName("title")[0]);
    oNewTitle.appendChild( gallery.document.createTextNode("HejHep") );
};
Avatar billede purup Nybegynder
21. august 2007 - 20:21 #22
mystisk med onload - det står ellers på w3 http://www.w3schools.com/jsref/jsref_onload.asp

Er det eneste jeg resikerer ved at bruge <img onload="... så ikke at jeg ikke kan regne med at browsere forstår det? Og hvis jeg tester på de browsere jeg vil understøtte skulle der vel ikke være noget problem - eller ?
(er der et "lovligt" alternativ til <img onload="... ?)

Men tak for hjælpen med det egentlige spørgsmål. Safari brugere må vel bare leve uden title.
I skal vel dele point så kan i ikke smide nogle svar?
Avatar billede olebole Juniormester
21. august 2007 - 23:22 #23
*LoL* - my BAAAAaaaaD! Jeg tjekkede for en sikkerheds skyld rekommandationen kl. 19:17 og blev mere end overrasket over ikke at kunne finde dem, hvor jeg kikkede. Jeg har selv brugt dem masser af gange! Jeg ved ikke, hvad jeg har set - eller hvor!

onload, onerror og onabort er _fuldtud_ valide events på et img-element ... sorry!  :D
Avatar billede olebole Juniormester
22. august 2007 - 00:04 #24
NEEEeeeeeJJ! De er alle invalide!

onload er udelukkende defineret som en valid attribut for body- og frameset-elementer i HTML 4.01.
Hverken onerror eller onabort er defineret som valid attribut for noget HTML-element.
    http://www.w3.org/TR/html4/loose.dtd
    http://www.w3.org/TR/html4/strict.dtd

Som jeg læser DOM Level 3, kan de heller ikke sættes via DOM/script, når de ikke er defineret i HTML 4.01. Om event types skriver de:

"When used with an [XML 1.0] or [HTML 4.01] application, the specifications of those languages may restrict the semantics and scope (in particular the possible target nodes) associated with an event type. Refer to the specification defining the language used in order to find those restrictions or to find event types that are not defined in this document."
    http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-EventTypes-complete

- og alt det synes jo at være i overensstemmelse med, hvad validatoren mener.

Tid til at tænde sig et vokslys og meditere over sit guddommelige indre jordskælv ...!!! Der kan man godtnok bare se!  =8-O
Avatar billede olebole Juniormester
22. august 2007 - 00:11 #25
Men hvorfor egentlig ikke bare åbne et dokument, du kalder med titlen i query'en? Så kan du skrive titlen ind i dokumentet - og det tager vel ikke ret meget længere for så lille et dokument. Du kan jo nøjes med at gøre det for Safari  :)
Avatar billede purup Nybegynder
22. august 2007 - 09:16 #26
Jeg er vist ikke lige helt med på hvad på mener med "kalde med titlen i query'en"?
Avatar billede purup Nybegynder
14. januar 2012 - 14:23 #27
Lukker
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