我创建了一个新的WPF项目,并添加了Awesomium 1.6.3 网页控制 http://awesomium.com/download/ to it.
然后,我将这段代码添加到MainWindow.xaml.cs
:
private void webControl1_Loaded(object sender, RoutedEventArgs e)
{
webControl1.LoadURL("https://www.google.com/");
}
private void webControl1_DomReady(object sender, EventArgs e)
{
var wc = new WebClient();
webControl1.ExecuteJavascript(jQuery);
webControl1.ExecuteJavascript(@"var __jq = jQuery.noConflict();");
webControl1.ExecuteJavascript(@"alert(__jq);");
using(var result = webControl1.ExecuteJavascriptWithResult(@"(function() { return 1; })();"))
{
MessageBox.Show(result.ToString());
}
//using (var result = webControl1.ExecuteJavascriptWithResult(@"(function() { return __jq('a'); })();"))
//{
// MessageBox.Show(result.ToString());
//}
}
它先提示“1”,然后提示“function (a,b){...}”,这是不正常的,现在我想了一下,但无论如何,这是另一个问题。
一旦我取消注释底部代码,它就会发出警报“1”,然后挂起。为什么?我如何才能获得有关页面上链接的一些信息?或者可靠地将一些信息传递回 C#?或者使用 C# 访问 DOM?
Edit: jQuery
只是一个包含 jQuery 1.7 代码的字符串。
关于为什么以下行挂起:
webControl1.ExecuteJavascriptWithResult(@"(function() { return __jq('a'); })();")
这是因为ExecuteJavascriptWithResult
只能返回基本的 Javascript 类型(字符串、数字、布尔值、数组或用户创建的对象)。您尝试返回无法映射到这些类型之一的本机 DOM 元素对象,因此请求失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)