【问题标题】:"Error calling method on NPObject!" for flex deep linking“在 NPObject 上调用方法时出错!”用于弹性深度链接
【发布时间】:2011-04-08 22:21:47
【问题描述】:

我在域 A 上托管了一个 flex 应用程序,并通过域 B 的网页提供服务。我启用了跨域脚本;在域 B 的网页中,我有一行

params.allowscriptaccess = "always";

在我的应用程序代码中

flash.system.Security.allowDomain("*");

为了更好的衡量,

flash.system.Security.allowDomain("keonehon.com"); // domain A

ExternalInterface 调用似乎有效;在启动时,应用程序调用一个javascript函数,网页调用一个函数来传递一个参数。

if (ExternalInterface.available){
                ExternalInterface.call("SWFLoadComplete");
                //lblMessage.text = "Data Sent!";
            }

function SWFLoadComplete(){
            callNewCarWithUser();
        }

        function callNewCarWithUser()
        {
          var user_id = document.getElementById('txtUserId').value;
          var room_id = document.getElementById('txtRoomId').value;
          getTheFlexApp().newCarWithUser(user_id, room_id);
        }

这可以正常工作。是的。似乎工作正常,不是吗?

但是,深层链接不起作用,因为在 URL 中设置 #state=____ flex 参数(通过输入内容或使用后退按钮向后导航)会导致在 @ 的第 435 行引发 javascript 错误987654329@,又名

getPlayer().browserURLChange(flexAppUrl); 

似乎存在某种跨域安全问题,即使我输入了flash.system.Security.allowDomain("*");。通过比较具有相同 html 和 swf 文件的两个页面,您可以看到在同域与跨域时存在不同的行为,一种情况是跨域,另一种情况是同域:

跨域:http://keonehon.com/gongos/dreamcar.html。 同域:http://rails.mit.edu/gongos/dreamcar.html

这到底是怎么回事?

【问题讨论】:

    标签: javascript flash flex4


    【解决方案1】:

    我不确定这是否相关,但我过去一直使用 ExtJS 得到这个错误,而问题实际上最终是一个简单的语法错误,(缺少括号 ])

    【讨论】:

      【解决方案2】:

      您是否尝试过 allowScriptAccess? (如果我没记错的话,这可能是区分大小写的)

      如果这不起作用,查看更多代码或示例页面会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-25
        • 1970-01-01
        相关资源
        最近更新 更多