从C#WebBrowser控制WPF中的JavaScript获取返回值



我将JavaScript注入到C#(System.Windows.Controls.WebBrowser)中的WebBrowser控件中这样,<C#>

IHTMLDocument2 webdoc = (IHTMLDocument2)webBrowser1.Document;
string var = File.ReadAllText("C:/.../Resources/script.txt");
object retVal = webdoc.parentWindow.execScript(var, "Jscript");

和javascript文件脚本.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);
}});

它的作用是,每当用户单击WebBrowser页面中的任何点时,它都会在该点附近收集HREF。

我想将HREF数组返回到我的C#,以便可以使用这些链接创建按钮。

但是,当我尝试时,

Console.WriteLine(retVal);

它没有在控制台上打印任何东西。即使我将它们投入到字符串或使用其他虚拟返回值之类的东西之后,它也没有打印任何东西。我得到正确的回报吗?有什么方法可以测试JavaScript的输出返回?

我认为这可能是一个范围问题。您是否尝试过移动

var domsArray = [];

(上)

$('body').bind('click',function(e){  .... 

功能?例如

var domsArray = [];
$('body').bind('click',function(e){
    for (var i = 0; i < 15; i++){  < ... etc ....>

我也认为您缺少几个分号(script.txt的第3行),尽管这可能不会有所作为。

最新更新