由于某些原因,此脚本无效:
element.text = "function TestClick() { $('" + testElement + "').click() }";
head.AppendChild(testScript);
webBrowser2.Document.InvokeScript("TestClick");
webBrowser2
控件位于http://google.com,变量testElement
等于.gbts
。如果我在Google上的Chrome上的开发者工具上运行脚本$("gbts").click();
,它可以正常工作,但是当我尝试将脚本调用到WebBrowser控件中时,我收到错误
“$未定义”
没有任何反应。我做错了什么?
答案 0 :(得分:1)
$
可能是jQuery实例的引用。您需要在网页中包含jQuery才能使其正常工作。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
答案 1 :(得分:0)
Nir Azuelos提供了部分答案。实际上,为了使代码在插入时能够正常工作,您需要jQuery或其他可以实现此API的代码。 (Zepto可能会奏效)
它在Chrome控制台中的作用原因是Chrome在控制台中定义了$
和$$
(以及其他),以方便开发人员使用。
在控制台中,如果您键入$
并看到function $() { [Command Line API] }
作为输出,则表示页面本身未定义$
。因此,页面中的任何脚本都无法使用它。
请注意,Chrome控制台中提供的$ function与jQuery提供的$函数完全不同。在Chrome控制台中,$(默认情况下)映射到类似于document.querySelector
的行为。有关文档,请参阅https://developers.google.com/chrome-developer-tools/docs/console。
此外,如果您只想注入简单的脚本,您可以完全避免使用jQuery。原则上,如果您要先将$
替换为document.querySelector
,或者在尝试呼叫document.QuerySelector
之前将$
分配给$
,您的代码就会有用。
"function TestClick() { document.querySelector('" + testElement + "').click() }";
原生DOM API和jQuery之间存在很大差异,因此您应该决定使用哪一个。