Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder
Verwijderd
Je zou het try-catch blok kunnen verbergen voor IE4 door het in een eval() te zetten. Misschien niet zo mooi, maar volgens mij werkt het wel.
if(document.getElementByID){
eval('try{}catch(e){}');
}
if(document.getElementByID){
eval('try{}catch(e){}');
}
De manier om vroeger bepaalde scriptblokken van een latere javascript versie te verbergen was door het toevoegen van een language="javascript1.x" aan de script-tag. IE4 gebruikt dat mechanisme nog, en ondersteund meen ik t/m javascript 1.3. als je dus een language="javascript1.5" oid gebruikt zou IE4 het ook moeten overslaan.
Intentionally left blank
Verwijderd
Als je language="JavaScript1.5" gebruikt, wordt het ook genegeerd door IE5 en IE6.
Je zou het wel kunnen proberen met language="JavaScript1.3", dit wordt in ieder geval gewoon uitgevoerd in IE5 en IE6.
Je zou het wel kunnen proberen met language="JavaScript1.3", dit wordt in ieder geval gewoon uitgevoerd in IE5 en IE6.
Het aantal IE4 gebruikers is geloof ik nog kleiner dan eht aantal NS4 gebruikers.. is het echt de moeite daar tijd aan te besteden?
Gecombineerd met een type-declaratie slaat IE6 'm niet over hoor (IE5 moet je maar even testen):Verwijderd schreef op 17 april 2004 @ 11:46:
Als je language="JavaScript1.5" gebruikt, wordt het ook genegeerd door IE5 en IE6.
Je zou het wel kunnen proberen met language="JavaScript1.3", dit wordt in ieder geval gewoon uitgevoerd in IE5 en IE6.
HTML:
1
| <script type="text/javascript" language="JavaScript1.5"> |
IE4 ondersteund volgens mij juist al wel "javascript1.3" net als de laatste NS4 versies. "javascript1.5" voldoet aan ECMA v3 en het klopt dat IE die nog steeds niet volledig geimplementeerd heeft (mijn bijbel zegt van wel, dat JScript5.5 fully compliant is, maar ik weet o.a. dat finally in errorhandling bijvoorbeeld niet geimplementeerd is, en zo zijn er nog wel meer manco's)
Voor de volledigheid: "javascript1.4" heeft voor browserimplementaties nooit bestaan
[ Voor 21% gewijzigd door crisp op 17-04-2004 12:01 ]
Intentionally left blank
Verwijderd
Het lijkt me dat IE6 bij het beoordelen van de gebruikte scripttaal eenvoudigweg het language attribuut negeert zodra er ook een type attribuut is opgegeven.
Het volgende werkt namelijk ook gewoon in IE6:
type="text/javascript" language="pietjepukscript1.5"
Als IE4 hetzelfde gedrag vertoont - niet getest overigens - is het niet een geschikte oplossing.
Het volgende werkt namelijk ook gewoon in IE6:
type="text/javascript" language="pietjepukscript1.5"
Als IE4 hetzelfde gedrag vertoont - niet getest overigens - is het niet een geschikte oplossing.
net geprobeerd met een versie nummer erbij
maar ie4 geeft nog steeds de foutmelding. geen echte oplossing dus.
dat zelfde geldt voor het eval() voorstel wat gedaan wordt, aangezien er zo'n 10 regels code binnen try{} staan.
iemand anders nog ideeen?
HTML:
1
| <script language="JavaScript1.5" src="./scipt.js" type="text/javascript"></script> |
maar ie4 geeft nog steeds de foutmelding. geen echte oplossing dus.
dat zelfde geldt voor het eval() voorstel wat gedaan wordt, aangezien er zo'n 10 regels code binnen try{} staan.
iemand anders nog ideeen?
Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder
ja, ideeen zat, maar bij gebrek aan een IE4 hier om het te kunnen testen, en het feit dat het niet boeiend meer is tegenwoordig maken dat ik er eigenlijk zelf ook geen tijd in wens te stekenBetuweKees schreef op 17 april 2004 @ 12:47:
net geprobeerd met een versie nummer erbij
HTML:
1 <script language="JavaScript1.5" src="./scipt.js" type="text/javascript"></script>
maar ie4 geeft nog steeds de foutmelding. geen echte oplossing dus.
dat zelfde geldt voor het eval() voorstel wat gedaan wordt, aangezien er zo'n 10 regels code binnen try{} staan.
iemand anders nog ideeen?
Het enige waar je nog wel naar zou kunnen kijken is of je het mischien zonder try-catch instructie zou kunnen stellen; ik kan me bijna geen situatie voorstellen - tenzij je heel gekke dingen doet of je het voor een soort van optimalisatie gebruikt - waarbij je het niet anders op zou kunnen lossen.
Intentionally left blank
Verwijderd
Je zou het ook nog zo kunnen proberen:
<script type="text/javascript">
if(document.getElementById){
document.write('<scr' + 'ipt type="text/javascript" src="script.js"></scr' + 'ipt>');
}
</script>
Ik zie trouwens niet in waarom die tien regels in het try blok een probleem zouden vormen bij m'n eerste oplossing.
<script type="text/javascript">
if(document.getElementById){
document.write('<scr' + 'ipt type="text/javascript" src="script.js"></scr' + 'ipt>');
}
</script>
Ik zie trouwens niet in waarom die tien regels in het try blok een probleem zouden vormen bij m'n eerste oplossing.
persoonlijk vind ik dit type afvragingen ook best wel ranzig:
als een browser hierop geen function-object teruggeeft zal hij undefined teruggeven en geen false of iets wat strict gezien naar false kan worden geevalueerd. Dit dien je trouwens niet te verwarren met de top-level property undefined die eigenlijk 'unassigned' zou moeten heten
Gelukkig is javascript niet zo strict, maar in andere talen zal je hiervoor afgestraft worden. In javascript wordt undefined gelijk gezien aan null (note: niet strict gelijk!), en die cast wel naar false.
Dit is m.i. de nette manier:
verder blijf ik erbij dat je beter kan kijken of je de try-catch weg kan laten dan nog ranzigere oplossingen te gaan verzinnen
JavaScript:
1
| if (document.getElementById) { } |
als een browser hierop geen function-object teruggeeft zal hij undefined teruggeven en geen false of iets wat strict gezien naar false kan worden geevalueerd. Dit dien je trouwens niet te verwarren met de top-level property undefined die eigenlijk 'unassigned' zou moeten heten
Gelukkig is javascript niet zo strict, maar in andere talen zal je hiervoor afgestraft worden. In javascript wordt undefined gelijk gezien aan null (note: niet strict gelijk!), en die cast wel naar false.
Dit is m.i. de nette manier:
JavaScript:
1
| if (typeof document.getElementById != 'undefined') { } |
verder blijf ik erbij dat je beter kan kijken of je de try-catch weg kan laten dan nog ranzigere oplossingen te gaan verzinnen
Intentionally left blank
Pagina: 1