Avatar billede hoppe11 Nybegynder
11. januar 2009 - 17:24 Der er 46 kommentarer og
1 løsning

swf element

jeg har et swf object og skal definere det i et javascript, men får undefined i IE.. det virker i FF

<object id="swf" ...>
<embed name="swf" ...>
</object>

elm = document['swf'];
Avatar billede jensgram Nybegynder
11. januar 2009 - 17:29 #1
- elm = document['swf'];
+ elm = document.getElementById('swf');

?
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 17:34 #2
så virker det hverken i IE eller FF
Avatar billede olebole Juniormester
11. januar 2009 - 17:36 #3
<ole>

Jo

/mvh
</bole>
Avatar billede jensgram Nybegynder
11. januar 2009 - 17:41 #4
Hehe :)
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 17:43 #5
ikke hos mig...

på swf_loaded får jeg alertet 'true' idet min swf er loaded, men får kun undefined eller null på dats2swf

function swf_loaded(swf_id)
{
    swf_obj[swf_id] = true;

    alert(swf_obj[swf_id]);
}

function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
   
    var elm;
    if(swf_id == 'swf') elm = document.getElementById('swf');
   
    alert(elm);
   
    if(loaded) elm.import_data(type, data);
    else setTimeout(data2swf, 100, swf_id, type, data);
}

var swf_obj = {};
Avatar billede olebole Juniormester
11. januar 2009 - 17:48 #6
Hvorfor fortæller du os ikke om de JS-fejl, du oplever? Dén setTimeout må da udløse en fejl. Derudover har jeg ingen anelse om, hvad du forsøger at gøre
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 17:51 #7
jamen jeg får ingen js fejl..

jeg forsøger at sende variabler til mit swf object.. først skal jeg vide hvornår objectet er loaded så jeg ikke sender værdierne til ingenting

min swf laver et eksternalt kald til swf_loaded(), og når det er gjort kan data2swf sende variabler tilbage til swf'en
Avatar billede jensgram Nybegynder
11. januar 2009 - 17:58 #8
"på swf_loaded får jeg alertet 'true' idet min swf er loaded, men får kun undefined eller null på dats2swf"

* Er betingelsen swf_id == 'swf' sand?
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 18:01 #9
ja den er.. kan også gøre således og det bliver det samme

    if(swf_id == 'swf')
    {
        elm = document.getElementById(swf_id);
        alert(elm);
    }
Avatar billede jensgram Nybegynder
11. januar 2009 - 18:10 #10
Så kan vi vel konkludere, at elementet med ID'et swf_id ikke findes (endnu).
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 18:13 #11
ja..

men som sagt virker det fint i FF når jeg gør sådan her

function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
 
    var elm;
    if(swf_id == 'swf') elm = document[swf_id];
 
    if(loaded) elm.import_data(type, data);
    else setTimeout(data2swf, 100, swf_id, type, data);
}

jeg skal bare have det til at virke i IE
Avatar billede jensgram Nybegynder
11. januar 2009 - 18:21 #12
Gad vide om det så er <embed>- eller <object>-elementet Fx har fat i?
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 18:34 #13
det _har_ virket på et tidspunkt.. aner bare ikke hvad jeg har gjort galt nu

men hvis jeg laver en alert på loaded får jeg undefinded i IE.. men swf_obj burde vel være "global"?

function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
    alert(loaded);
   
    var elm;
    if(swf_id == 'swf') elm = document[swf_id];
   
    if(loaded) elm.import_data(type, data);
    else setTimeout(data2swf, 100, swf_id, type, data);
}
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 18:35 #14
jeg definerer jo swf_obj udenfor funktionerne

var swf_obj = {};
Avatar billede olebole Juniormester
11. januar 2009 - 18:50 #15
Jeg tror, du laver nogle ting, du ikke fortæller. Du er nok nødt til at vise et link til siden
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 18:55 #16
jeg synes det virker mystisk i hvert fald

http://www.bluemachines.dk/
Avatar billede jensgram Nybegynder
11. januar 2009 - 18:58 #17
Da swf_obj = {};

Vil swf_obj['swf']; vel naturligvis være undefined.
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:05 #18
jamen swf_obj['swf'] bliver jo defineret sådan her swf_loaded('swf')

function swf_loaded(swf_id)
{
    swf_obj[swf_id] = true;
    alert(swf_obj[swf_id]+' '+swf_id);
}

både i IE og FF bliver følgende returneret:

'true swf'
Avatar billede jensgram Nybegynder
11. januar 2009 - 19:16 #19
Men som koden ser ud nu, kaldes data2swf() før swf_loaded().
Avatar billede jensgram Nybegynder
11. januar 2009 - 19:16 #20
... faktisk før 'swf'-elementet eksisterer.
Avatar billede olebole Juniormester
11. januar 2009 - 19:26 #21
Du kan ikke kalde på et barn, der endnu ikke er født. Således kan du heller ikke oprettev en reference til et object-element, der endnu ikke findes, skrevet ud i dokumentet. Du skal nok vente med at kalde til sidens onload-event
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:31 #22
swf_loaded() kaldes fra selve SWF objectet når det er loaded som en ekstern callback

data2swf() kører i loop med timeout indtil swf_loaded() er kaldt og swf_obj['swf'] er sat til 'true' :)
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:32 #23
når swf_loaded() bliver kaldt er object-elementet vel lavet?
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:34 #24
i IE får jeg allerede fejl her i starten af funktionen inden jeg når til object-elementet

loaded returnerer 'undefined'

function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
    alert(loaded);
...
}
Avatar billede jensgram Nybegynder
11. januar 2009 - 19:39 #25
...

var swf_obj = {};

data2swf('swf', ...);


Det giver et problem!
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:41 #26
hvordan?
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:42 #27
som sagt kører data2swf i loop med timeout indtil swf_obj['swf'] bliver sat
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:44 #28
det er rigtigt at data2swf kaldes før swf_obj['swf'] bliver sat, men den kører jo i loop indtil det sker
Avatar billede olebole Juniormester
11. januar 2009 - 19:46 #29
Prøv at vise os, hvad der sker, hvis du skifter til:
    elm = document.getElementById(swf_id);
Avatar billede olebole Juniormester
11. januar 2009 - 19:48 #30
- men din kode giver jo ikke mening, når der i koden står:
    <object id="swf" .......>
Avatar billede olebole Juniormester
11. januar 2009 - 19:49 #31
Glem min seneste kommentar  =)
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:49 #32
<object id="swf" style="width:700px; height:400px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0">
<param name="movie" value="swf/player.swf">
<param name="flashvars" value="<?=$flashvars?>">
<param name="quality" value="high">
<param name="scale" value="noscale">
<param name="wmode" value="transparent">
<embed name="swf" width="700" height="400" src="swf/player.swf" flashvars="<?=$flashvars?>" quality="high" scale="noscale" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
</object>
Avatar billede olebole Juniormester
11. januar 2009 - 19:51 #33
Ja ........ og?  =)

Din funktion skal nok se sådan ud:

function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
    alert(loaded);
   
    if(loaded) {
        if(swf_id == 'swf') elm = document.getElementById(swf_id);
        elm.import_data(type, data);
    }
    else setTimeout(data2swf, 100, swf_id, type, data);
}
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:51 #34
jeg har ændret linjen til

elm = document.getElementById(swf_id);

men nu sker der slet ingenting

men jeg laver en alert på loaded og den bliver undefined i IE.. gør den ikke i Firefox.. og den fejl her kommer før 'elm' bliver sat

function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
    alert(loaded);
...
}

det er først senere i funktionen vi kommer til 'elm' :)
Avatar billede olebole Juniormester
11. januar 2009 - 19:53 #35
Husker du at kikke efter fejl i FF's fejlkonsol?
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 19:56 #36
der kommer ingen fejl

men kan du svare på hvorfor 'loaded' giver undefined? det er jo før vi kommer til alt det andet her
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 20:00 #37
altså i IE bliver loaded aldrig sat.. trods swf_loaded() bliver kaldt og der bliver returneret 'true swf'
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 20:01 #38
function swf_loaded(swf_id)
{
    swf_obj[swf_id] = true;
    alert(swf_obj[swf_id]+' '+swf_id);
}

function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
    alert(loaded);
 
    if(loaded)
    {
        var elm;
        if(swf_id == 'swf') elm = document.getElementById(swf_id);
       
        elm.import_data(type, data);
    }
    else setTimeout(data2swf, 100, swf_id, type, data);
}

var swf_obj = {};
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 20:06 #39
for lige at tage den sidste linje med i mit script

function swf_loaded(swf_id)
{
    swf_obj[swf_id] = true;
    alert(swf_obj[swf_id]+' '+swf_id);
}

function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
    alert(loaded);

    if(loaded)
    {
        var elm;
        if(swf_id == 'swf') elm = document.getElementById(swf_id);
     
        elm.import_data(type, data);
    }
    else setTimeout(data2swf, 100, swf_id, type, data);
}

var swf_obj = {};

data2swf('swf', 'tracklists', {day:[[1,'Francesco P - Sunshine (Original mix)','./audio/day/01 Francesco P - Sunshine (Original mix).mp3','120058.625'],[2,'Umek & Beltek - Option to stimulate (Original mix)','./audio/day/02 Umek & Beltek - Option to stimulate (Original mix).mp3','120084.75'],[3,'Freakquencer - Trouble and pain (Al-Faris electic mix)','./audio/day/03 Freakquencer - Trouble and pain (Al-Faris electic mix).mp3','120084.75'],[4,'M&D Substance - Made in wishland (M&D Substance mix)','./audio/day/04 M&D Substance - Made in wishland (M&D Substance mix).mp3','118230'],[5,'Mark Mendes - Hubert is cool (Original mix)','./audio/day/05 Mark Mendes - Hubert is cool (Original mix).mp3','120215.375'],[6,'Vadim Zhukov - Talking to a god (Tasadi & Noah Stewart\'s sanctuary remix)','./audio/day/06 Vadim Zhukov - Talking to a god (Tasadi & Noah Stewart\'s sanctuary remix).mp3','117368'],[7,'David West - Carrier (Original mix)','./audio/day/07 David West - Carrier (Original mix).mp3','118230'],[8,'Solar Sun - Reflections (Original mix)','./audio/day/08 Solar Sun - Reflections (Original mix).mp3','120084.75'],[9,'Jody Wisternoff - Cold drink, hot girl (Original mix)','./audio/day/09 Jody Wisternoff - Cold drink, hot girl (Original mix).mp3','119823.5'],[10,'Passenger 10 - Passenger 10 (Original mix)','./audio/day/10 Passenger 10 - Passenger 10 (Original mix).mp3','120084.75']],night:[[11,'Andy B - State of the art (Original mix)','./audio/night/01 Andy B - State of the art (Original mix).mp3','133407.125'],[12,'Carlos - The silmarillia (4 Strings remix)','./audio/night/02 Carlos - The silmarillia (4 Strings remix).mp3','125283.125'],[13,'Balearic House Super Club - The lighthouse (Original mix)','./audio/night/03 Balearic House Super Club - The lighthouse (Original mix).mp3','120084.75'],[14,'Spartaque - Maska (Original mix)','./audio/night/04 Spartaque - Maska (Original mix).mp3','126563.125'],[15,'Hoxton Whores - Friday saturday love (Vocal mix)','./audio/night/05 Hoxton Whores - Friday saturday love (Vocal mix).mp3','120607.125'],[16,'Cyro - Score a million (Original mix)','./audio/night/06 Cyro - Score a million (Original mix).mp3','120058.625'],[17,'Tyler Michaud feat. Marcie - Dirty girl (Tyler Michaud remix)','./audio/night/07 Tyler Michaud feat. Marcie - Dirty girl (Tyler Michaud remix).mp3','122958.125'],[18,'Etostone - Lands of lore (Original mix)','./audio/night/08 Etostone - Lands of lore (Original mix).mp3','113841.5'],[19,'Slyde - Frequency (NAPT remix)','./audio/night/09 Slyde - Frequency (NAPT remix).mp3','120502.625'],[20,'Tilt - New day (David West remix)','./audio/night/10 Tilt - New day (David West remix).mp3','116427.625']]});</script>
Avatar billede olebole Juniormester
11. januar 2009 - 20:19 #40
Jeg kan ikke se, du har ændret noget på sitet
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 22:00 #41
hov, det var en fejl.. sådan

men kan du sige mig hvorfor loaded bliver ved med at være undefined i IE? det er jo et helt banalt script.. umiddelbart i hvert fald
Avatar billede olebole Juniormester
11. januar 2009 - 22:02 #42
Jamen, det kan jeg jo ikke bruge til noget. Slet alerten
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 22:31 #43
jeg er kommet frem til noget

http://www.bluemachines.dk/index2.php

jeg har her taget data2swf() funktionen og smidt den på 'test' knappen nede ved facebook-linket i bunden..

fejlen ligger altså i data2swf.. og tror kun det er fordi 'loaded' variablen ikke bliver sat?
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 22:34 #44
nyt script :)

<script type="text/javascript">
function swf_loaded(swf_id)
{
    swf_obj[swf_id] = true;
}

function data2swf(swf_id, type, data)
{
    var elm;
    if(swf_id == 'swf') elm = document[swf_id];
   
    elm.import_data(type, data);
}

/*
function data2swf(swf_id, type, data)
{
    var loaded = swf_obj[swf_id];
   
    if(loaded)
    {
        var elm;
        if(swf_id == 'swf') elm = document[swf_id];
       
        elm.import_data(type, data);
    }
    else setTimeout(data2swf, 100, swf_id, type, data);
}
*/

var swf_obj = {};
</script>
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 22:36 #45
som jensgram var lidt inde på så er det heromkring fejlen ligger

swf_obj[swf_id];

det er som om at swf_obj ikke er "global"!?
Avatar billede hoppe11 Nybegynder
11. januar 2009 - 23:35 #46
igen... tilbage på
http://www.bluemachines.dk/

nu har jeg taget funktionen som loader SWF objectet og kopieret ned på data2swf knappen ved facebook linket i bunden, så det både er her og i mit script med funkionerne

data2swf('swf', 'tracklists', {day:[[1,'Francesco P - Sunshine (Original mix)','./audio/day/01 Francesco P - Sunshine (Original mix).mp3','120058.625'],[2,'Umek & Beltek - Option to stimulate (Original mix)','./audio/day/02 Umek & Beltek - Option to stimulate (Original mix).mp3','120084.75'],[3,'Freakquencer - Trouble and pain (Al-Faris electic mix)','./audio/day/03 Freakquencer - Trouble and pain (Al-Faris electic mix).mp3','120084.75'],[4,'M&D Substance - Made in wishland (M&D Substance mix)','./audio/day/04 M&D Substance - Made in wishland (M&D Substance mix).mp3','118230'],[5,'Mark Mendes - Hubert is cool (Original mix)','./audio/day/05 Mark Mendes - Hubert is cool (Original mix).mp3','120215.375'],[6,'Vadim Zhukov - Talking to a god (Tasadi & Noah Stewart\'s sanctuary remix)','./audio/day/06 Vadim Zhukov - Talking to a god (Tasadi & Noah Stewart\'s sanctuary remix).mp3','117368'],[7,'David West - Carrier (Original mix)','./audio/day/07 David West - Carrier (Original mix).mp3','118230'],[8,'Solar Sun - Reflections (Original mix)','./audio/day/08 Solar Sun - Reflections (Original mix).mp3','120084.75'],[9,'Jody Wisternoff - Cold drink, hot girl (Original mix)','./audio/day/09 Jody Wisternoff - Cold drink, hot girl (Original mix).mp3','119823.5'],[10,'Passenger 10 - Passenger 10 (Original mix)','./audio/day/10 Passenger 10 - Passenger 10 (Original mix).mp3','120084.75']],night:[[11,'Andy B - State of the art (Original mix)','./audio/night/01 Andy B - State of the art (Original mix).mp3','133407.125'],[12,'Carlos - The silmarillia (4 Strings remix)','./audio/night/02 Carlos - The silmarillia (4 Strings remix).mp3','125283.125'],[13,'Balearic House Super Club - The lighthouse (Original mix)','./audio/night/03 Balearic House Super Club - The lighthouse (Original mix).mp3','120084.75'],[14,'Spartaque - Maska (Original mix)','./audio/night/04 Spartaque - Maska (Original mix).mp3','126563.125'],[15,'Hoxton Whores - Friday saturday love (Vocal mix)','./audio/night/05 Hoxton Whores - Friday saturday love (Vocal mix).mp3','120607.125'],[16,'Cyro - Score a million (Original mix)','./audio/night/06 Cyro - Score a million (Original mix).mp3','120058.625'],[17,'Tyler Michaud feat. Marcie - Dirty girl (Tyler Michaud remix)','./audio/night/07 Tyler Michaud feat. Marcie - Dirty girl (Tyler Michaud remix).mp3','122958.125'],[18,'Etostone - Lands of lore (Original mix)','./audio/night/08 Etostone - Lands of lore (Original mix).mp3','113841.5'],[19,'Slyde - Frequency (NAPT remix)','./audio/night/09 Slyde - Frequency (NAPT remix).mp3','120502.625'],[20,'Tilt - New day (David West remix)','./audio/night/10 Tilt - New day (David West remix).mp3','116427.625']]});

når siden som sagt ikke loader i IE trykker man bare på knappen og SWF'en loader... hvad er det lige der er galt her?? det er virkelig underligt!?

hmmm...
Avatar billede hoppe11 Nybegynder
15. januar 2009 - 16:59 #47
underligt.. hvis jeg smider den i en window.onload er der ingen problemer..

jeg kan sgu ikke se hvad forskellen skulle være, for når swf_loaded() er kaldt er hele dokumentet jo loaded!?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester