gpt4 book ai didi

c# - 从 C# Webbrowser 控件 WPF 中的 Javascript 获取返回值

转载 作者:搜寻专家 更新时间:2023-11-01 04:42:25 27 4
gpt4 key购买 nike

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

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);
}});

它的作用是,每当用户点击 web 浏览器页面中的任何一点时,它都会收集该点附近的 href。

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

然而,当我尝试时,

Console.WriteLine(retVal);

它没有在控制台上打印任何内容。即使在我将它们转换为带有其他虚拟返回值的 string 或 int 之类的东西之后,它也没有打印任何东西。我得到正确的返回吗?有什么方法可以测试从 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 和第 4 行),尽管这可能不会有什么不同。

关于c# - 从 C# Webbrowser 控件 WPF 中的 Javascript 获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13253647/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com