我在使用Silverlight託管跨域應用程序時遇到問題。跨域可腳本化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代碼不同的領域,onLoadsucc
函數被調用時不帶參數,所以它記錄以下行:
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
,所以這是要麼不是問題。
我錯過了什麼?
謝謝!
謝謝您的回覆,我會明天試試,因爲我沒有我的虛擬機器。 – 2010-11-01 17:02:00
我修改了我的Silverlight應用程序和我的成功方法的源代碼,但它不起作用。 :( – 2010-11-02 09:10:54
哦,它的工作原理我不得不把所有的腳本代碼放到我的根視覺類(我不知道爲什麼)。 – 2010-11-02 09:40:49