我打开Amazon.com域中的任何页面(例如"http://www.amazon.com"),然后尝试像这样注入JQuery:
var injected = page.injectJs('jquery-1.7.1.js');
console.log("jquery was injected successfully: " + injected);
Run Code Online (Sandbox Code Playgroud)
此代码将打印true到控制台.但是,尝试$(document)从内部访问page.evaluate()如下:
page.onLoadFinished = function (status) {
var results = page.evaluate(function() {
$(document);
});
phantom.exit();
};
Run Code Online (Sandbox Code Playgroud)
将打印TypeError: 'undefined' is not a function到控制台.
此代码适用于我尝试过的大多数其他域.我注意到亚马逊似乎有自己的JQuery版本加载,我想知道它是否可能与我正在以某种方式加载的JQuery版本冲突.有任何想法吗?
您只需将 jQuery 置于 noConflict 模式,并使用备用变量名称,如下所示:
var results = page.evaluate(function () {
$jq = window.jQuery;
$jq.noConflict();
console.log("Title: " + $jq('title').text());
});
Run Code Online (Sandbox Code Playgroud)
为我工作!希望对你有帮助!:)
| 归档时间: |
|
| 查看次数: |
2715 次 |
| 最近记录: |