0

何らかの理由で、このスクリプトが機能していません:

element.text = "function TestClick() { $('" + testElement + "').click() }";
head.AppendChild(testScript);
webBrowser2.Document.InvokeScript("TestClick");

webBrowser2コントロールはhttp://google.comあり、変数testElementは equals です.gbts。Chrome on Google の開発者ツールでスクリプトを実行する$("gbts").click();と問題なく動作しますが、スクリプトを WebBrowser コントロールで呼び出そうとするとエラーが発生します

「$ は定義されていません」

そして何も起こりません。私は何を間違っていますか?

4

2 に答える 2

1

$おそらくjQueryインスタンスの参照です。これを機能させるには、jQuery を Web ページに組み込む必要があります。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
于 2013-08-13T18:46:52.360 に答える
0

Nir Azuelos が答えの一部を提供します。実際、挿入時にこのコードが機能するには、jQuery など、この API を実装する何かが必要です。(Zepto はおそらく動作します)

Chrome コンソールで機能する理由は、開発者にとって便利なように、Chrome がコンソール自体で (とりわけ) を定義$しているためです。$$

コンソールに入力して出力として$表示される場合は、ページ自体で定義されていないことを意味します。したがって、ページ内のスクリプトでは使用できません。function $() { [Command Line API] }$

Chrome コンソールで提供される $ 関数は、jQuery で提供される $ 関数とはまったく異なる動作をすることに注意してください。Chrome コンソールでは、$ (デフォルト) は のような動作にマッピングされますdocument.querySelector。ドキュメントについては、 https://developers.google.com/chrome-developer-tools/docs/consoleを参照してください。

現在のページに jQuery が読み込まれていない場合、Chrome の JS コンソールで jQuery 構文を使用できるのはなぜですか?も参照してください。

また、単純なスクリプトのみを挿入する場合は、jQuery の使用を完全に回避できる場合があります。原則として、を呼び出す前に に置き換えるか、 に代入する$と、コードは機能します。document.querySelectordocument.QuerySelector$$

"function TestClick() { document.querySelector('" + testElement + "').click() }";

ネイティブ DOM API と jQuery には大きな違いがあるため、どちらを使用するかを決定する必要があります。

于 2013-08-14T15:16:47.773 に答える