Toon posts:

[Javascript] Problemen in Internet Explorer

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mede-tweakers,
ik heb een aantal banners gemaakt met flash, en ik wou dat als random functie hebben op een site waar ik mee bezig ben. Nou heb ik een javascriptje gemaakt:

code:
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
<script language="JavaScript">

var randomnumber = Math.round(Math.random()*4);

if (randomnumber == 1)

{banner1();}

else

if (randomnumber == 2)

{banner2();}

else

if (randomnumber == 3)

{banner3();}

else {banner4();}


function banner1(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner1.swf\"><param name=quality value=high><embed src=\"banner1.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner2(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner2.swf\"><param name=quality value=high><embed src=\"banner2.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner3(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner3.swf\"><param name=quality value=high><embed src=\"banner3.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner4(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner4.swf\"><param name=quality value=high><embed src=\"banner4.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

</script>


Nou werkt de code wel goed in FireFox, maar in Internet Explorer wordt niks geladen.

Voorbeeld valt te zien op www.lekkerlijnen.nl.

ik het geen idee wat er mis is, aangezien ik niet zo bedreven ben met javascript, kheb ook niet zo snel iets kunnen vinden hierover

[ Voor 17% gewijzigd door Verwijderd op 05-04-2005 16:39 ]


Verwijderd

Topicstarter
of valt dit toch meer onder scripting?

Verwijderd

wellicht is het dat language="javascript", dat moet sowieso vervangen worden door type="text/javascript"

verder is je code ook wel erg bloated hoor, kan op z'n minst al korter door:

code:
1
2
var randomnumber = Math.round(Math.random()*4);
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner"+randomnumber+".swf\"><param name=quality value=high><embed src=\"banner"+randomnumber+".swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:34

crisp

Devver

Pixelated

Vervang name="banner" door name="movie".
Overigens verdient het aanbeveling in inline script forward slashes in strings ook te escapen ;)

[ Voor 8% gewijzigd door crisp op 05-04-2005 18:17 ]

Intentionally left blank


  • Ascathon
  • Registratie: Augustus 2004
  • Laatst online: 03-05 20:45
Ik ben niet echt into Javascript, kheb op school wel C++ en Java.
Ik zie in die code wel de functies staan. Maar de if statements staan niet in een functie. Of hoef dat niet?

  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script type="text/javascript">

var randomnumber = Math.round(Math.random()*4) + 1;
eval("banner" + randomnumber + "()");

function banner1(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner1.swf\"><param name=quality value=high><embed src=\"banner1.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner2(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner2.swf\"><param name=quality value=high><embed src=\"banner2.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner3(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner3.swf\"><param name=quality value=high><embed src=\"banner3.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner4(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner4.swf\"><param name=quality value=high><embed src=\"banner4.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

</script>

Zo dan ;)

[ Voor 18% gewijzigd door André op 05-04-2005 18:32 ]


  • Tsunami
  • Registratie: Juni 2002
  • Niet online
Ascathon schreef op dinsdag 05 april 2005 @ 18:22:
Ik ben niet echt into Javascript, kheb op school wel C++ en Java.
Ik zie in die code wel de functies staan. Maar de if statements staan niet in een functie. Of hoef dat niet?
De code wordt gewoon uitgevoerd als de pagina geladen wordt, dus dat is niet nodig.
André schreef op dinsdag 05 april 2005 @ 18:31:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script type="text/javascript">

var randomnumber = Math.round(Math.random()*4) + 1;
eval("banner" + randomnumber + "()");

function banner1(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner1.swf\"><param name=quality value=high><embed src=\"banner1.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner2(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner2.swf\"><param name=quality value=high><embed src=\"banner2.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner3(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner3.swf\"><param name=quality value=high><embed src=\"banner3.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

function banner4(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0\" width=\"754\" height=\"138\"><param name=banner value=\"banner4.swf\"><param name=quality value=high><embed src=\"banner4.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"200\"></embed></object>")
}

</script>

Zo dan ;)
Ik ben toch meer voor de code van mophor, waarom een berg onnodige functies neergooien?

  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Tsunami schreef op dinsdag 05 april 2005 @ 18:34:

Ik ben toch meer voor de code van mophor, waarom een berg onnodige functies neergooien?
Dat ben ik met je eens :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:34

crisp

Devver

Pixelated

oeh, wat een mooie eval() :) :+

Maar je lost het probleem nog steeds niet op. Verder verbaast het me dat je geen single quotes om de strings zet zodat je minder hoeft te escapen ;)

[ Voor 72% gewijzigd door crisp op 05-04-2005 18:39 ]

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

crisp schreef op dinsdag 05 april 2005 @ 18:38:
oeh, wat een mooie eval() :) :+

Maar je lost het probleem nog steeds niet op. Verder verbaast het me dat je geen single quotes om de strings zet zodat je minder hoeft te escapen ;)
Dit leek me bij hoge uitzondering een gerechtvaardigde eval :P De rest van code heb ik niet naar gekeken ;)

[ Voor 6% gewijzigd door André op 05-04-2005 18:40 ]


Verwijderd

Topicstarter
mja ik heb de code van mophor toch maar gebruikt, scheelt toch wel weer wat regels
en ik heb dat
code:
1
2
3
 else

if


bij wijze van test nog staan (men 4e item werd niet gepakt, wat uiteindelijk kwam omdat ik em niet had ge 'include' )

maar het probleem van internet explorer heb ik nog steeds

Verwijderd

hoe is je code nu dan? (zal allicht wat overzichtelijker zijn) heb je de tip van crisp ook geimplementeerd?

overigens wil je waarschijnlijk ook liever
code:
1
var randomnumber = 1+Math.floor(Math.random()*4);


dan krijg je een nummer tussen de 1 en 4 ipv 0 en 4

en check ff of die code die je genereert wel ok is, want in IE zie ik wel dat ie wat doet. Kan zo op het eerste gezicht niet zeggen of dit nette code is (Alleen een <object> zou toch voldoende moeten zijn?)

HTML:
1
2
3
4
5
6
7
<OBJECT 
codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0 
height=138 width=754 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="_cx" VALUE="19950"><PARAM NAME="_cy" VALUE="3651"><PARAM NAME="FlashVars" VALUE=""><PARAM NAME="Movie" VALUE=""><PARAM NAME="Src" VALUE=""><PARAM NAME="WMode" VALUE="Window"><PARAM NAME="Play" VALUE="-1"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE=""><PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE="always"><PARAM NAME="Scale" VALUE="ShowAll"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE=""><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1">
<embed src="banner1.swf" quality=high 
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" 
type="application/x-shockwave-flash" width="750" 
height="200"></embed></OBJECT>


disclaimer: ik gebruik echt zo weinig flash dat ik dus niet eens weet hoe ik dat erin moet stouwen

[ Voor 72% gewijzigd door Verwijderd op 05-04-2005 19:32 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:34

crisp

Devver

Pixelated

André schreef op dinsdag 05 april 2005 @ 18:39:
[...]

Dit leek me bij hoge uitzondering een gerechtvaardigde eval :P De rest van code heb ik niet naar gekeken ;)
JavaScript:
1
window['banner' + randomnummer]();

;)

Intentionally left blank


Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 05 april 2005 @ 19:25:
hoe is je code nu dan? (zal allicht wat overzichtelijker zijn) heb je de tip van crisp ook geimplementeerd?

overigens wil je waarschijnlijk ook liever
code:
1
var randomnumber = 1+Math.floor(Math.random()*4);


dan krijg je een nummer tussen de 1 en 4 ipv 0 en 4

en check ff of die code die je genereert wel ok is, want in IE zie ik wel dat ie wat doet. Kan zo op het eerste gezicht niet zeggen of dit nette code is (Alleen een <object> zou toch voldoende moeten zijn?)

HTML:
1
2
3
4
5
6
7
<OBJECT 
codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0 
height=138 width=754 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="_cx" VALUE="19950"><PARAM NAME="_cy" VALUE="3651"><PARAM NAME="FlashVars" VALUE=""><PARAM NAME="Movie" VALUE=""><PARAM NAME="Src" VALUE=""><PARAM NAME="WMode" VALUE="Window"><PARAM NAME="Play" VALUE="-1"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE=""><PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE="always"><PARAM NAME="Scale" VALUE="ShowAll"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE=""><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1">
<embed src="banner1.swf" quality=high 
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" 
type="application/x-shockwave-flash" width="750" 
height="200"></embed></OBJECT>


disclaimer: ik gebruik echt zo weinig flash dat ik dus niet eens weet hoe ik dat erin moet stouwen
zo is flash ook al ge-embed ;) , kijk maar wat er staat naar document.write
en ik dacht dat crisp zijn opmerking niet naar mij was gericht maar naar Andr'e

Verwijderd

ja, dat is dus ook wat internet explorer netjes opneemt in de code, vraag me alleen af of het correct is

  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

crisp schreef op dinsdag 05 april 2005 @ 19:30:
[...]


JavaScript:
1
window['banner' + randomnummer]();

;)
Fuck :/

Dat had ik ook al geprobeerd maar in mijn oneindige stupiditeit de haakjes binnen de blokhaken gezet waardoor dat dus niet werkte |:( ;)

[ Voor 3% gewijzigd door André op 05-04-2005 20:13 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:34

crisp

Devver

Pixelated

Je hebt nog steeds de name=banner niet veranderd in name=movie; believe me - ik heb het getest en op zich is het ook logisch: flash in de object-tag heeft die parameter nodig. Mozilla/Firefox en andere standards-compliant browsers gebruiken als fallback de embed-tag, maar IE heeft de object-tag niet goed geimplementeerd en negeert de embed-tag.

Intentionally left blank


Verwijderd

crisp schreef op dinsdag 05 april 2005 @ 19:30:
JavaScript:
1
window['banner' + randomnummer]();

;)
Of
JavaScript:
1
2
3
4
5
6
banner = new Array();
banner[0] = function( ) { ... }
banner[1] = function( ) { ... }
banner[2] = function( ) { ... }

banner[randomnummer]();


Dit werkt ook zelfs nog:
JavaScript:
1
2
3
4
5
6
banner = {
  1:function( ) { ... },
  2:function( ) { ... },
  3:function( ) { ... }
}
banner[randomnummer]();


;)

Verwijderd

Topicstarter
@ crisp: ik weet niet of dat wel werkt aangezien mijn .swf-jes wel gewoon banner#.swf zijn genoemd.......

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:34

crisp

Devver

Pixelated

Verwijderd schreef op donderdag 07 april 2005 @ 18:59:
@ crisp: ik weet niet of dat wel werkt aangezien mijn .swf-jes wel gewoon banner#.swf zijn genoemd.......
Heb je het al geprobeert dan?
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
           codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
           width="750" height="200">
    <param name="movie" value="http://www.lekkerlijnen.nl/banner1.swf"> 
    <param name="quality" value="high">

    <param name="bgcolor" value="#FFFFFF">
    <!--[if !IE]> <-->
    <object data="http://www.lekkerlijnen.nl/banner1.swf"
            width="750" height="200" type="application/x-shockwave-flash">
     <param name="quality" value="high">
     <param name="bgcolor" value="#FFFFFF">
     <param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer">
     FAIL (the browser should render some flash content, not this).
    </object>
    <!--> <![endif]-->

   </object>

dit werkt gewoon zowel in IE als in Firefox en andere browsers. Als je het geneste object-element wilt vervangen door een embed dan kan dat ook maar heb je geen valid HTML.

Intentionally left blank

Pagina: 1