Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExternalInterface.call可以工作,但javascript可以';无法访问actionscript回调?_Javascript_Actionscript 3_Actionscript - Fatal编程技术网

ExternalInterface.call可以工作,但javascript可以';无法访问actionscript回调?

ExternalInterface.call可以工作,但javascript可以';无法访问actionscript回调?,javascript,actionscript-3,actionscript,Javascript,Actionscript 3,Actionscript,在网页中,javascript和as3的设置如下: Javascript在页面中加载swf swf调用ExternalInterface.call(“javascriptFunctionName”,即“”) Javascript的javascriptFunctionName()使用由ExternalInterface.addCallback设置的actionscript函数 当前,javascriptFunctionName()首先检查它是否有权访问actionscript的回调函数 这张支票有

在网页中,javascript和as3的设置如下:

  • Javascript在页面中加载swf
  • swf调用
    ExternalInterface.call(“javascriptFunctionName”,即“”)
  • Javascript的
    javascriptFunctionName()
    使用由ExternalInterface.addCallback设置的actionscript函数
  • 当前,
    javascriptFunctionName()
    首先检查它是否有权访问actionscript的回调函数

    这张支票有必要吗?或者actionscript设法调用javascript函数的事实是否表明授予了访问权限


    编辑:更具体地说,我的代码有效。我担心它可能会被放在具有不同权限的第三方页面中。

    JS to AS3和AS3 to JS是两种不同的行为,因此仅仅因为它朝一个方向工作,并不意味着它朝相反的方向工作

    要允许JS在SWF中调用AS3方法,您需要通过为希望从JS调用的每个AS3方法调用一次来注册每个AS3方法

    假设您有这样一个AS3方法:

    function myFunction(value:String):void
    {
        //do something here
    }
    
    您首先需要注册它:

    //first parameter is name of function to use in JS.
    //second parameter is the AS3 function itself.
    ExternalInterface.addCallback("myAS3function", myFunction);
    
    然后你可以从JS调用它;例如:

    document.getElementById('mySWF').myAS3function("Hello World");
    

    JavaScript/Flash通信有几种不同的场景,具有不同的安全要求

    • SWF和HTML匹配的协议和域。

      JavaScript可以与Flash通信

      如果参数
      allowScriptAccess
      设置为
      “sameDomain”
      (默认)或
      “always”
      ,则Flash可以与JavaScript通信

      例如,在

    • SWF和HTML的域不同。

      如果从Flash调用
      Security.allowDomain(exactDomain)
      Security.allowDomain('*')
      ,JavaScript可以与Flash通信

      如果参数
      allowScriptAccess
      设置为
      “始终”

      例如,在

    • SWF通过HTTPS提供,但HTML通过HTTP提供。

      如果从Flash调用
      Security.allowInsecureDomain(exactDomain)
      Security.allowInsecureDomain('*')
      ,JavaScript可以与Flash通信

      如果参数
      allowScriptAccess
      设置为
      “始终”

      例如,在


    要回答是否有必要检查通信是否正常工作的问题,如果要立即显示错误消息,答案可能是肯定的。无论哪种方式,我都会使用
    try..catch
    来处理两边的每个调用。

    它朝一个方向工作,并不意味着它朝相反的方向工作
    不清楚您的意思是它可能编码不正确,或者权限可能不允许它,即使代码是正确的,我的意思是没有正确编码。我帮不了你;这超出了我对JS/浏览器的知识范围。