2011-04-08 67 views
1

我有一个flex应用程序托管在域A上,并通过域B上的网页提供服务。我已启用跨域脚本编写;在域B的网页,我也行“调用NPObject上的方法时出错!”用于flex深度链接

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参数(通过键入内容或通过向后导航使用后退按钮)导致javascript错误在第行435处抛出,又名

getPlayer().browserURLChange(flexAppUrl); 

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

跨域:http://keonehon.com/gongos/dreamcar.html。 same-domain:http://rails.mit.edu/gongos/dreamcar.html

这是怎么回事?

回答

0

你试过了吗allowScriptAccess取而代之? (如果我没有记错的话,这可能区分大小写)

如果这样做不起作用,它可以帮助查看更多代码或示例页面。

1

我不确定这是否有关联,但我用ExtJS始终得到这个错误,问题实际上最终只是一个简单的语法错误,(缺少括号)

相关问题