簡體   English   中英

在C#Webbrowser控件WPF中從Javascript獲取返回值

[英]Getting return value from Javascript in C# Webbrowser control WPF

我在C# (System.Windows.Controls.WebBrowser)中將JavaScript注入到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);
}});

它的作用是,每當用戶點擊webbrowser頁面中的任何一點時,它就會收集該點附近的href。

我想將href數組返回到我的C#,以便我可以使用這些鏈接創建按鈕。

但是,當我試過的時候,

Console.WriteLine(retVal);

它沒有在控制台上打印任何東西。 即使我將它們轉換為字符串或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行),盡管這可能不會產生任何影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM