Ga naar inhoud

pop-up/klayers/xhtml


anoniem

Aanbevolen berichten

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]
Link naar reactie
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]
Link naar reactie
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..
Link naar reactie
[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.
Link naar reactie
[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.
Link naar reactie
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
Link naar reactie
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
Link naar reactie
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
Link naar reactie
[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
Link naar reactie
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
Link naar reactie
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
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...