5

C# で WebBrowser コントロールに JavaScript インジェクションを行いまし(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 から返される出力をテストする方法はありますか?

4

1 に答える 1

0

これはスコープの問題かもしれないと思います。移動してみましたか

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行目)が欠落していると思いますが、おそらく違いはありません。

于 2012-11-18T03:58:06.040 に答える