Vraag & Antwoord

Webprogrammeren & scripting

pop-up/klayers/xhtml

19 antwoorden
  • ik heb een scriptje deels overgenomen en deels aangepast aan klayers. [code:1:ac79e3d6d5] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="CONTENT-Type" content="text/html; charset=iso-8859-1" /> <title>een testpagina</title> <link rel="stylesheet" type="text/css" href="css/stndrd.css" /> <script type="text/javascript" src="scripts/klayers.js" /> <script type="text/javascript"> <!-- var b = 600; //b = breedte van de popup var h = 400; //h = hoogte van de popup var schermbreedte = getWindowWidth; var schermhoogte = getWindowHeight; function winPop() { if (schermbreedte <= 600 || schermhoogte <= 480) { var x = 0; var y = 0; } else { var x = (schermbreedte - b)/2; //de x-coordinaat van de popup var y = (schermhoogte - h)/2; //de y-coordinaat van de popup } var eigenschappen = 'scrollbars="no",screenX="x",left="x",screenY="y",top="y",width="b",height="h"'; window.open('frame.html','',eigenschappen); } winPop(); //--> </script> </head> <body> </body> </html> [/code:1:ac79e3d6d5] het probleem is dat de popup niet de grootte heeft van mijn wensen. de popup wordt niet gecentreerd en ik heb grote problemen met de validator van het w3.[edit]na het weghalen van domme fouten mist er nu alleen nog iets in de body tag ik weet niet precies wat er in moet, maar dit gedeelte maakt nu niet veel meer uit[/edit] ik hoop dat iemand mij kan helpen grtzz.. [edit]de code is een klein beetje verandert het language attribuut is nu verwijdert en vervangen[/edit][/code]
  • Het lijkt me beter als je voor de script tags niet de korte notatie gebruikt, maar gewoon ouderwets: [code:1:a796be680f] <script type="text/javascript" src="scripts/klayers.js"></script> [/code:1:a796be680f] En verder worden de features van een window niet omgeven met quotes en als je bovendien wat met de variabelen wil doen (en daar lijkt het wel op) zal je deze wel juist moeten concateneren. Dit zal dus beter moeten werken: [code:1:a796be680f] var eigenschappen = 'scrollbars=0,screenX=' + x + ',left=' + x + ',screenY=' + y + ',top=' + y + ',width=' + b + ',height=' + h; [/code:1:a796be680f]
  • allereerst bedankt voor je reactie. waarom zou ik het script op een ouderwetse manier afsluiten? je var eigenschappen werkte, de popup werd nu de grootte die bedoeld was alleen mijn scriptje voor het positioneren werkt niet helemaal perfect hij komt nml bovenin de hoek. zou dit aan klayers kunnen liggen of de manier waarop ik het aanroep? grtzz..
  • [quote:db3a89677d="termin8or"]waarom zou ik het script op een ouderwetse manier afsluiten?[/quote:db3a89677d] [url=http://www.w3.org/TR/REC-html40/interact/scripts.html#edef-SCRIPT]w3 is de baas[/url] [quote:db3a89677d="termin8or"]zou dit aan klayers kunnen liggen of de manier waarop ik het aanroep?[/quote:db3a89677d] Geen idee, ik ken de functies niet. Heb je al gekeken wat je terugkrijgt uit deze functies? /edit: nu ik beter kijk zie ik het al (helemaal overheen gelezen) [code:1:db3a89677d] var schermbreedte = getWindowWidth(); var schermhoogte = getWindowHeight(); [/code:1:db3a89677d] Let op de haakjes () bij de functie aanroep.
  • Voor een goed werkende KLayers is het ook wel handig als je het eerst initialiseert in de head:[code:1:39ff0552b9]initKLayers();[/code:1:39ff0552b9];) - Bas
  • [code:1:e433cdcd48] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="CONTENT-Type" content="text/html; charset=iso-8859-1" /> <title>een testpagina</title> <link rel="stylesheet" type="text/css" href="css/stndrd.css" /> <script type="text/javascript" src="scripts/klayers.js"></script> <script type="text/javascript"> <!-- initKLayers(); var b = 600; //b = breedte van de popup var h = 400; //h = hoogte van de popup var schermbreedte = getWindowWidth(); var schermhoogte = getWindowHeight(); function winPop() { if (schermbreedte <= 400 || schermhoogte <= 200) { var x = 0; var y = 0; } else { var x = (schermbreedte - b)/2; //de x-coordinaat van de popup var y = (schermhoogte - h)/2; //de y-coordinaat van de popup } var eigenschappen = 'scrollbars=0,screenX=' + x + ',left=' + x + ',screenY=' + y + ',top=' + y + ',width=' + b + ',height=' + h; window.open('frame.html','',eigenschappen); } winPop(); //--> </script> </head> <body> </body> </html> [/code:1:e433cdcd48] ik heb nu even de verbeteringen toegevoegd. Maar hij geeft een error die waarschijnlijk in klayers zit. regel 66, karakter 14 object required. /*he bas ik dacht al zou ik jou ff een pm sturen over dit probleem of komt ie vanzelf op een klayers topic af :wink: */ grtzz.
  • Hmmm... Heb nu weinig tijd, ik zal er later op de dag even goed naar kijken. - Bas
  • Zucht... Ik snap er niets van... En het feit dat ik vrijwel nooit met JavaScript programmeer helpt ook niet echt. Ik kan de oorzaak niet eens vinden. Je code werkt prima in Netscape 4.7, Netscape 7 en Opera 5 maar in IE5.5 en Opera 6 komt er geen pop-up. Ik heb geprobeerd om als parameter "self" mee te geven maar ook dat mocht niet baten. Ook heb ik "initKLayes()" in klayers.js even weggehaald aangezien dit bij mij ooit met een oudere versie ervan hielp, helaas ook nu geen resultaat. Morgen een nieuwe dag, dan knutsel ik er nog een beetje mee. Het móet toch op te lossen zijn!? :evil: - Bas
  • Probeer dit eens. [code:1:5b27c145d9]window.onload = winPop;[/code:1:5b27c145d9] Aangezien winPop wordt uitgevoerd voor het body element beschikbaar is krijg je deze error. /E
  • OK, goed nieuws! Ten eerste: ik vermelde eerder dat de code niet werkte in Opera 6, maar dat blijkt een kleine vergissing te zijn. Waarom? Ik had in de Quick-Preferences de optie Refuse Pop-Up Windows aanstaan, niet bijster slim dus. Daarnaast heb ik de onderstaande code succesvol getest in verschillende browsers icm met het originele KLayers bestand. Hopelijk heb je er wat aan...[code:1:8632210cd2]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>KLayers Testpagina</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <style type="text/css" media="all"> <!-- /* Styles for off-line viewing and page-specific styles */ --> </style> <script language="JavaScript" type="text/javascript" src="klayers.js"></script> <script language="JavaScript" type="text/javascript"> <!-- initKLayers(); var b = 600; //b = breedte van de popup var h = 400; //h = hoogte van de popup var schermbreedte = getWindowWidth(); var schermhoogte = getWindowHeight(); function winPop() { if (schermbreedte <= 400 || schermhoogte <= 200) { var x = 0; var y = 0; } else { var x = (schermbreedte - b)/2; //de x-coordinaat van de popup var y = (schermhoogte - h)/2; //de y-coordinaat van de popup } var eigenschappen = 'scrollbars=0,screenX=' + x + ',left=' + x + ',screenY=' + y + ',top=' + y + ',width=' + b + ',height=' + h; window.open('frame.html','',eigenschappen); } //winPop(); window.onload = winPop; //--> </script> </head> <body> KLayers testpagina: als het goed is komt er een popup in het midden van het scherm. <noscript>Moet je natuurlijk wel je JavaScript aanzetten!</noscript> </body> </html>[/code:1:8632210cd2][b:8632210cd2]Edit:[/b:8632210cd2]Weer een foutje, het werkt niet met het originele KLayers bestand maar wel met mijn aangepaste versie. Het verschil? De aanroep van initKLayers in het bestand zelf is verwijderd en ik heb enkele puntkomma's gezet. Het bovenstaande werkt dan overigens ook met de XHTML1.1 doctype. Voobeeld: [url=http://www.basje.com/test/termin8or/xhtml10.html]XHTML 1.0[/url] | [url=http://www.basje.com/test/termin8or/xhtml11.html]XHTML 1.1[/url] | [url=http://www.basje.com/test/termin8or/klayers.js]Aangepaste klayers.js[/url] - Bas
  • Als je een pop-up wil centreren te opzichte van het scherm zal dit beter werken. (Het bovenstaande centreert alleen te opzichte van een gemaximaliseerd window). [code:1:77b0f8a692]var sWinProp = ''; var iScreenWidth = self.screen.width; var iScreenHeight = self.screen.height; var iWinWidth = iScreenWidth > 640 ? 640 : 620; var iWinHeight = iScreenHeight > 480 ? 480 : 460; var iTop = (iScreenHeight - iWinHeight) / 2; var iLeft = (iScreenWidth - iWinWidth) / 2; sWinProp = 'scrollbars=0,left=' + iLeft + ',top=' + iTop + ',width=' + iWinWidth + ',height=' + iWinHeight; oWinRef = window.open('test.htm', 'myPopUp', sWinProp, false);[/code:1:77b0f8a692] /E
  • maar werkt bovenstaande ook met klayers? alvast heel erg bedankt bas ik denk dat ik jou klayer ff ga downloaden, maar als er een nieuwe browser uit is... :roll: grtzz...
  • [quote:b0d32727fa="termin8or"]maar als er een nieuwe browser uit is... :roll:[/quote:b0d32727fa]Volgens mij is het belangrijkste dat je initKLayers() niet in het bestand zelf maar in het document waarin je de functies gebruikt aanroept. Dit is een kwestie van één regel verwijderen, dat is dus wel te overzien. En die puntkomma's staan gewoon aan het einde van ieder commando. Al met al een kleine aanpassing die ook in de toekomst zijn vruchten wel zal afwerpen. - Bas
  • Ik heb eens naar de source van kLayers gekeken en raad jullie af om kLayers te gebruiken in combinatie met IE6 en strict doctypes. kLayers houdt geen rekening met de IE6 quirks/compatibility mode. /E
  • [quote:536b86fda5="Eelco Osseweijer"]Ik heb eens naar de source van kLayers gekeken en raad jullie af om kLayers te gebruiken in combinatie met IE6 en strict doctypes. kLayers houdt geen rekening met de IE6 quirks/compatibility mode.[/quote:536b86fda5]uitleg zou fijn zijn. @bas lijkt me ook niet zo moeilijk bedankt.
  • 'k moet ff wat research doen 'k antwoord zo meteen. /E
  • OK, als je bepaalde doctypes([url]http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/doctype.asp[/url]) in IE6 gebruikt, schakelt IE over naar een standaard compliant mode. Dat is geweldig zou je denken. Nee dat is niet. Het vervelende is namelijk dat bepaalde properties van document.body worden overgedragen aan document.documentElement. Dit houdt in dat bijv document.body.clientHeight (met een strict doctype) de hoogte van het BODY element weer geeft en document.documentElement.clientHeight de hoogte van het window minus de scrollbar. Dus als je kLayers gebruikt moet je je heel goed orienteren wat voor effect een bepaald doctype heeft. Ik persoonlijk vind het allemaal vrij verwarrend en het kost mij over het algemeen nogal wat tijd om cross-browser & standards compliant scripts te schrijven. Wat ik jouw aanraad, termin8or , is i.p.v. een library te gebruiken die de complexiteit van crossbrowser implementaties verbergt, eerst zelf je goed verdiepen in javascript en cross-browser & standards compliant scripts. Meer info vind je o.a. hier [url]http://www.xs4all.nl/~ppk/js/doctypes.html[/url] /E
  • maar hoe kan bashamer z'n ding dan wel werken xhtml 1.1 in ie6?
  • Bashamer's ding zal verschillende resultaten geven in verschillende versies van IE. Maw voor ie5 en 5.5 zal de pop worden gecentreerd tov Window hoogte minus scrollbar en voor ie6 tov de hoogte van het body element. Voor popups is dit niet zo belangrijk, maar als je een foldout menu script maakt is dit een stuk vervelender. /E

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.