2010-09-21 15 views

回答

3

夠簡單的使用: -

HtmlPage.Window.Invoke("someJavascriptFunc", "Hello", "World"); 

在託管Silverlight的頁面的JavaScript有: -

function someJavascriptFunc(p1, p2) 
{ 
    alert(p1 + ' ' + p2); 
} 

編輯:Ken是正確的上面是南轅北轍。

比方說你有在Silverlight這樣的功能: -

string GetStuff(string name) 
{ 
    return "Hello " + name; 
} 

現在,您可以使用此功能的JavaScript這樣的: -

HtmlPage.Window.SetProperty("sayHello", new Func<string, string>(GetStuff));  

現在的代碼在JavaScript可以簡單地這樣做這個: -

alert(sayHello("Fred")); 
+1

這是相反的方向,我認爲:從SL到JS。我認爲他需要另一種方式,從JS到SL。 – 2010-09-21 16:02:15

+0

@Ken:你說得對哦! – AnthonyWJones 2010-09-21 16:39:52

+0

我以前從未見過這種技術。尼斯。 – 2010-09-22 05:01:12

0

如果你在使用事件,理論上你可以使用AttachEvent t o訂閱活動。這跟回調不太一樣,但很接近。注意:我還沒有在基於Mozilla的瀏覽器上測試過AttachEvent(其中相應的JS命令是「addEventListener()」而不是「attachEvent()」),並且我無法使AttachEvent()工作即使在IE中也可靠。所以我一直使用[ScriptableMember]屬性,並從JS中調用它。是否有一個你不想使用它的理由? (我很好奇聽到有沒有人有更好的想法。)

+0

更新我的答案是正確的方式。 – AnthonyWJones 2010-09-21 20:23:25