Ik heb een probleem bij het includen van flash op de pagina voor Internet Explorer.
Ik wil het graag netjes volgens de standaarden hebben, maar daar houdt IE niet zo van. Daarnaast wil ik ook niet dat je eerst moet klikken om het object te activeren.
Nu heb ik een jscriptje gemaakt dat alleen in IE gedraaid wordt. Deze schrijft de object tags opnieuw uit. Het probleem zit nu bij de <param> tags. Waarom het is weet ik niet, maar deze tags komen in de innerHTML van het object niet tevoorschijn. Daarom voeg ik ze in een loopje toe aan de html.
Het probleem hierbij is nu weer dat IE ALLE <param> tags op de pagina teruggeeft en niet zoals je zou verwachten de tags die bij de bewuste object horen. Gebruik je slechts 1 flash op de pagina, dan gaat het goed, maar zijn er meerdere flashobjecten dan krijg je in beide objecten dus alle <param> tags die er in het document zijn en zie je dus twee keer dezelfde flash. De code die ik gebruik is als volgt:
Het probleem zit dus in regel 30 van het script. De alert op regel 36 wordt uitgevoerd zo vaak als er <param> tags in de document zitten. Ongeacht waar deze in het document zitten.
Hoe kan ik in IE enkel elementen opvragen die bij een parent element horen?
Ik wil het graag netjes volgens de standaarden hebben, maar daar houdt IE niet zo van. Daarnaast wil ik ook niet dat je eerst moet klikken om het object te activeren.
Nu heb ik een jscriptje gemaakt dat alleen in IE gedraaid wordt. Deze schrijft de object tags opnieuw uit. Het probleem zit nu bij de <param> tags. Waarom het is weet ik niet, maar deze tags komen in de innerHTML van het object niet tevoorschijn. Daarom voeg ik ze in een loopje toe aan de html.
Het probleem hierbij is nu weer dat IE ALLE <param> tags op de pagina teruggeeft en niet zoals je zou verwachten de tags die bij de bewuste object horen. Gebruik je slechts 1 flash op de pagina, dan gaat het goed, maar zijn er meerdere flashobjecten dan krijg je in beide objecten dus alle <param> tags die er in het document zijn en zie je dus twee keer dezelfde flash. De code die ik gebruik is als volgt:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| var objects = document.getElementsByTagName("object"); init(); function init() { var objects = document.getElementsByTagName("object"); for (var i=0; i<objects.length; i++) { window.setTimeout("eolas("+i+")", 1); } } function eolas(i) { var object_html = ''; var params, par_name, par_value, y; // ie's object tag object_html += '<OBJECT '; object_html += 'codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0 '; object_html += 'height='+objects[i].getAttribute('height')+' '; object_html += 'width='+objects[i].getAttribute('width')+' '; object_html += 'classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000>'; // innerHTML is an IE thing, // but even their own stuff doesn't work // IE blatantly disregards <param> tags // in the innerHTML of an object tag params = objects[i].getElementsByTagName('param'); for (y = 0; y < params.length; y++) { par_name = params[y].getAttribute('name'); par_value = params[y].getAttribute('value'); object_html += '<PARAM NAME="'+par_name+'" value="'+par_value+'">'; alert('<PARAM NAME="'+par_name+'" value="'+par_value+'">'); } // merge with tags data and close tag object_html += objects[i].innerHTML; object_html += '</OBJECT>'; objects[i].outerHTML = object_html; alert(object_html); } |
Het probleem zit dus in regel 30 van het script. De alert op regel 36 wordt uitgevoerd zo vaak als er <param> tags in de document zitten. Ongeacht waar deze in het document zitten.
Hoe kan ik in IE enkel elementen opvragen die bij een parent element horen?
Ik ontken het bestaan van IE.