5
我做了JavaScript注入到WebBrowser控件在C#(System.Windows.Controls.WebBrowser)
使得<C#>
在C#Web浏览器控件从Javascript获取返回值WPF
IHTMLDocument2 webdoc = (IHTMLDocument2)webBrowser1.Document;
string var = File.ReadAllText("C:/.../Resources/script.txt");
object retVal = webdoc.parentWindow.execScript(var, "Jscript");
和JavaScript文件script.txt是,
var headID = document.getElementsByTagName('head')[0];
var newScript = document.createElement('script');
newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js'
headID.appendChild(newScript)
$('body').bind('click',function(e){
var domsArray = [];
for (var i = 0; i < 15; i++){
for (var j = 0; j < 15; j++){
if (document.elementFromPoint(e.clientX+i, e.clientY+j) && (jQuery.inArray(document.elementFromPoint(e.clientX+i, e.clientY+j), domsArray) < 0)){
domsArray.push(document.elementFromPoint(e.clientX+i, e.clientY+j));
}if (document.elementFromPoint(e.clientX-i, e.clientY+j) && (jQuery.inArray(document.elementFromPoint(e.clientX-i, e.clientY+j), domsArray) < 0)){
domsArray.push(document.elementFromPoint(e.clientX-i, e.clientY+j));
}if (document.elementFromPoint(e.clientX+i, e.clientY-j) && (jQuery.inArray(document.elementFromPoint(e.clientX+i, e.clientY-j), domsArray) < 0)){
domsArray.push(document.elementFromPoint(e.clientX+i, e.clientY-j));
}if (document.elementFromPoint(e.clientX-i, e.clientY-j) && (jQuery.inArray(document.elementFromPoint(e.clientX-i, e.clientY-j), domsArray) < 0)){
domsArray.push(document.elementFromPoint(e.clientX-i, e.clientY-j));
}}}
for (var p = 0; p < domsArray.length; p++){
alert(domsArray[p].href);
}});
它的功能是,只要用户点击浏览器页面中的任意点,它就会收集该点附近的href。
我想将href数组返回给我的C#,以便我可以使用这些链接创建按钮。
然而,当我尝试过,
Console.WriteLine(retVal);
它未打印控制台上什么。 即使在我将它们转换为诸如带有其他虚拟返回值的string或int之类的东西之后,它也不会打印任何东西。 我得到正确的回报? 有没有什么办法可以测试从javascript输出返回?
您是否尝试在调试时检查'retVal'的值以查看它是否为null或有值?如果它确实有一个值,那么您应该能够在调试时看到数据类型,属性等等,以便更好地了解需要修改的内容以获取所需的数据。 – Alexander