我在.net应用程序中使用WebKit浏览器控件。我也是JSON的新手,对Java脚本知之甚少。我是从java脚本代码中调用一个方法C#方法。我知道WebKit控件有“ObjectForScripting”属性。
C#代码: - 此代码在其中一个按钮点击上执行。将java脚本注入渲染的HTML页面。
Element scriptElm = browser.Document.CreateElement("script");
scriptElm.AppendChild(browser.Document.CreateTextNode("Test(['ABC','EFG'],{'name':'First Name','surname':'LastName'})"));
NodeList headElm = browser.Document.GetElementsByTagName("head");
headElm[0].AppendChild(scriptElm);
上面的代码从呈现的HTML页面调用Java脚本方法。
Java脚本代码:
function Test(arg1,arg2)
{
document.write(arg2.name); // Printing correct i.e. Firstname
document.write(arg2); // Bad!!!! always print [Object object]
window.external.TestMethod(arg1,arg2); // Call method in C# code.
}
C#方法签名
public bool TestMethod(string obj1, String obj2)
{
MessageBox.Show(obj1.ToString());
MessageBox.Show(obj2.ToString());
return true;
}
所以在上面的回调方法中,我无法正确获得第二个参数ieobj2。在C#中。我总是把它当作对象。我尝试将其设置为Object但不起作用。我应该如何将其转换为正确的格式?
谢谢, Omky
答案 0 :(得分:2)
尝试将方法签名更改为:
public bool TestMethod(object obj1, object obj2)
在其上设置断点并查看您实际接收的类型。此外,如果断点未命中,则会出现其他问题。