Javascript 跨域脚本Silverlight应用程序

Javascript 跨域脚本Silverlight应用程序,javascript,silverlight,browser,silverlight-4.0,cross-domain,Javascript,Silverlight,Browser,Silverlight 4.0,Cross Domain,我在使用Silverlight托管跨域应用程序时遇到问题 我有一个托管在不同域上的应用程序,该应用程序包含在页面的以下HTML代码中: <script type="text/javascript"> function succ( sender, args ) { console.log("SUCCESS"); console.log(sender); console.log(args); } function err( sender, args ) {

我在使用Silverlight托管跨域应用程序时遇到问题

我有一个托管在不同域上的应用程序,该应用程序包含在页面的以下HTML代码中:

<script type="text/javascript">
function succ( sender, args ) {
    console.log("SUCCESS");
    console.log(sender);
    console.log(args);
}
function err( sender, args ) {
    console.log("FAILURE");
    console.log(sender);
    console.log(args);
}
</script>
<object width="400" height="20" id="app" type="application/x-silverlight-2" data="data:application/x-silverlight-2,">
    <param name="minruntimeversion" value="4.0.41108.0"/>
    <param name="autoupgrade" value="false"/>
    <param name="onerror" value="err"/>
    <param name="onload" value="succ"/>
    <param name="enablehtmlaccess" value="true"/>
    <param name="source" value="http://example.com/app.xap"/>
</object>
如果我在同一个域上托管,它会记录正确的行:

SUCCESS
UserControl {}
undefined
因此,在第一种情况下,我无法从javascript访问带注释的方法,因为我没有对应用程序的任何引用

AppManifest.xml
文件中,我包含了
HtmlPage.RegisterScriptableObject
方法所需的属性,如下所示:

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            ExternalCallersFromCrossDomain="ScriptableOnly"
>
    <Deployment.Parts>
    </Deployment.Parts>
</Deployment>

xap
文件是通过
application/x-silverlight-app
内容类型传输的,因此这也不是问题所在

我错过了什么


谢谢

假设您已经注册了一个名为“Thingy”的外部对象

您应该能够通过html对象元素的
Content
属性访问它。在对象标记上放置一个
id=“mySL”
。现在请尝试以下代码:-

function succ( sender, args ) { 
    console.log("SUCCESS"); 
    console.log(document.getElementById("mySL").Content.Thingy); 
    console.log(args); 
} 

只需确保在代码的早期注册“Thingy”,就像在用作根可视对象的类的构造函数中一样。

同样的问题,并按照他在评论中描述的主题启动器解决

我必须将所有可编写脚本的代码放到我的根可视化类中


谢谢您的回复,我明天会尝试,因为我这里没有虚拟机。我已经修改了silverlight应用程序的源代码和成功方法,但它不起作用:(哦,它起作用了,我不得不将所有可编写脚本的代码放在我的根可视化类中(我不知道为什么)。
function succ( sender, args ) { 
    console.log("SUCCESS"); 
    console.log(document.getElementById("mySL").Content.Thingy); 
    console.log(args); 
}