Avatar billede nielspt Nybegynder
18. maj 2008 - 11:49 Der er 14 kommentarer og
2 løsninger

Kalde JavaScript fra Flash (swf)

Er det muligt at kalde nedenstående JavaScript fra en swf-knap?


java script:

    <script type="text/javascript">
        window.addEvent('domready', function(){
                    $('stop').addEvent('click', function(e) {
                e = new Event(e).stop();
           
                var url = "europa.php";
           
                /**
                * The simple way for an Ajax request, use onRequest/onComplete/onFailure
                * to do add your own Ajax depended code.
                */
                new Ajax(url, {
                    method: 'get',
                    update: $('log')
                }).request();
            });
        });
</
    </script>


Forslag i Flash:

import flash.external.*;

knap.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
function mouseUpHandler(event:MouseEvent):void {
    ExternalInterface.call("ETELLERANDET??");
}
Avatar billede w13 Novice
18. maj 2008 - 12:00 #1
</
skal nok ikke være i den kode. Og så ville jeg i øvrigt lægge det i en funktion, så det var lettere at kalde:

    <script type="text/javascript">
    function DoIt(){
        window.addEvent('domready', function(){
                    $('stop').addEvent('click', function(e) {
                e = new Event(e).stop();
           
                var url = "europa.php";
           
                /**
                * The simple way for an Ajax request, use onRequest/onComplete/onFailure
                * to do add your own Ajax depended code.
                */
                new Ajax(url, {
                    method: 'get',
                    update: $('log')
                }).request();
            });
        });
    }
    DoIt();
    </script>

Og så skulle du kunne kalde det fra Flash med:
getURL("java script:DoIt();void(0)");
Avatar billede nielspt Nybegynder
18. maj 2008 - 12:14 #2
Det ser ikke ud til at virke, desværre.

Det jeg gerne vil, er at opnå følgende http://demos.mootools.net/Ajax - men i stedet for et link (Click here), skal man kunne klikke inde i en swf..
Avatar billede w13 Novice
18. maj 2008 - 12:16 #3
Så må der være noget andet galt.

Jeg har tit gjort sådan, at jeg har kaldt JavaScript-funktioner fra Flash med: getURL("java script:funktionen();void(0)");

Men det kræver selvfølgelig, at funktionen ligger på din HTML-side, som Flash'en også ligger på.
Avatar billede nielspt Nybegynder
18. maj 2008 - 12:37 #4
Ja, jeg tror også der er noget andet galt, da getURL("java script:funktionen();void(0)"); ser rigtigt ud..

Men så er spørgsmålet, hvad der er galt. Nedenstående lytter på et <a href="#" name="stop"> - men det må være muligt at kalde denne fra flash, på en eller anden måde...

      $('stop').addEvent('click', function(e) {
                e = new Event(e).stop();
Avatar billede w13 Novice
18. maj 2008 - 12:41 #5
Har du ændret JavaScript-koden, som jeg beskrev i mit første indlæg, så den nu ligger i en funktion?
Ligger den på samme side som dit Flash-objekt.
Avatar billede nielspt Nybegynder
18. maj 2008 - 12:46 #6
Jep - jeg har kopieret dit javascript ind.
Og ja, javascript-koden og flash-objektet ligger på samme side...
Avatar billede andersbro Nybegynder
18. maj 2008 - 13:48 #7
Kann det have noget at gøre med, hvilken version af AS I snakker om?
getURL er AS2.
Avatar billede nielspt Nybegynder
18. maj 2008 - 14:02 #8
Nå for søren..

Jeg snakker AS3..
Avatar billede andersbro Nybegynder
18. maj 2008 - 14:14 #9
Umiddelbart vil jeg tro, at det skulle virke, hvis du bruger externalinterface.call("DoIt") og w13's version af javascript'et med tilsvarende navn på funktionen.
Avatar billede nielspt Nybegynder
18. maj 2008 - 15:21 #10
Tak for forsøget, men det virker stadig ikke..

Kan det måske være, at funktionen bliver kaldt rigtigt nok, men at den lytter efter <a href="#" name="stop">, som jo ikke gives med via AS?
Avatar billede andersbro Nybegynder
18. maj 2008 - 15:43 #11
Er desværre ikke ferm til javascript. Men prøv at lav en alert som det første i dit javascript, så kan du i hvert fald se, hvornår du får fat i funktionen fra flash.
Jeg sidder med AS2 lige nu, så jeg kan ikke hjælpe mere specifikt...
Avatar billede nielspt Nybegynder
18. maj 2008 - 16:17 #12
Så fandt jeg langt om længe ud af det:

java script:
    function test(){
    var url = "europa.php";
    new Ajax(url, {
                    method: 'get',
                    update: $('log')
                }).request();
    }

ActionScript 3.0:
import flash.external.*;

knap_mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
function mouseUpHandler(event:MouseEvent):void {
    ExternalInterface.call("test");
}

import flash.external.*;

afrika_mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
function mouseUpHandler(event:MouseEvent):void {
    ExternalInterface.call("stop");
}

:-)

Tusind tak for hjælpen begge to.
Hvis du smider et svar andersbro, så deler du med w13 :-)
Avatar billede andersbro Nybegynder
18. maj 2008 - 16:26 #13
Jamen tak :-) - er lidt nysgerrig efter at se, hvordan du bruger det...
Avatar billede nielspt Nybegynder
18. maj 2008 - 20:51 #14
Så hold øje med godtur.dk - er ved at lave et verdenskort, hvor tryk på de forskellige kontinenter (flash) resulterer i en informationer (JavaScript) om, hvad der findes af oplevelser i de pågældende lande.. :-)

Regner med at det kommer til at hedde "do's and dont's" ;-) Men der går nok lige en uge eller to før det er sat op.

Og tak for hjælpen!
Avatar billede olebole Juniormester
18. maj 2008 - 20:54 #15
<ole>

Undgå at bruge metoden 'get' til Ajax. Det 'stjæler' hukommelse i IE. Derudover ser det ikke ud til, det er et særlig hensigtsmæssigt/validt Ajax-library, du har fat i  =)

/mvh
</bole>
Avatar billede nielspt Nybegynder
18. maj 2008 - 21:11 #16
olebole: Det burde ellers være toppen af poppen: http://mootools.net/
:-)

Hvilke noget af det er ikke hensigtsmæssigt/validt?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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