我有一個WebBrowser控件。我在head標籤中添加了一些JavaScript,並且可以通過添加警報來看到它按預期工作。裏面的這個js我創建一個功能,增加了一些成員,它的原型就像這樣:如何調用使用C#在JavaScript中創建的自定義對象的方法?
function test() {
}
test.prototype.run = function() {
alert('success!')
}
function createTest() {
return new test()
}
然後回來的C裏面#我做:
dynamic test = this.browser.InvokeScript("createTest");
test.run();
我可以看到,測試對象是一些ComObject,但是當我調用run()時,什麼也沒有發生。我沒有錯誤,但沒有任何反應。有誰知道如何調用這種類型的自定義對象?
另外假設我想擺脫createTest()方法,我如何從C#中創建一個新的測試實例?
此外,對於獎勵積分,有什麼特別的我需要知道附加事件到這個自定義對象(在一個'完整'成員),這樣它會回調到我的C#代碼?
我不知道爲什麼我必須這樣做,但如果我使用反射,我可以得到InvokeMember MemberInfo對象的位置,然後我可以調用它,它實際上會調用js對象上的成員!我不知道爲什麼動態對象已經不這樣做了......但我會發布我創建的包裝代碼來做到這一點,除非有人能夠首先找到更清晰的方法。 – 2010-06-17 22:07:15