gpt4 book ai didi

javascript - 跨域可编写脚本的 Silverlight 应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:22:13 28 4
gpt4 key购买 nike

我在使用 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>

但是如果 app.xap 应用程序托管在与此 HTML 代码不同的域中,onLoad succ 函数在没有参数的情况下被调用,因此它记录了以下行:

SUCCESS
undefined
undefined

如果我在同一个域上托管,它会记录正确的行:

SUCCESS
UserControl {}
undefined

所以在第一种情况下,我无法从 javascript 访问 [ScriptableMember] 注释方法,因为我没有对该应用程序的任何引用。

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 Content-Type 传输的,所以这也不是问题。

我错过了什么?

谢谢!

最佳答案

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

您应该能够通过 html 对象元素的 Content 属性访问它。在对象标签上放置一个 id="mySL"。现在试试这段代码:-

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

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

关于javascript - 跨域可编写脚本的 Silverlight 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4053101/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com