该网站在 h1
标签中显示访问者的 IP 地址,其中 id = "ip"
当我使用 return document.querySelector('#ip').innerText;
时,它显示正确的 IP 地址并且一切正常。
但是,当我使用 return $('#ip').text();
时,它显示 null
有什么想法吗?
var casper = require('casper').create();
casper.start("http://mikeyaworski.com/IP", function() {
var ip = this.evaluate(function() {
// return document.querySelector('#ip').innerText; // does work
return $('#ip').text(); // doesn't work, but it should
});
this.echo("\nYour public IP address is: " + ip);
});
casper.run();
最佳答案
我最终从 here 下载了 jQuery到我电脑上的某个地方。
然后我关注了documentation关于这个话题,它似乎奏效了(奇怪的是,因为在过去,我不需要遵守这些“规则”)。
我的代码是这样结束的:
var casper = require('casper').create();
casper.start("http://mikeyaworski.com/IP", function() {
// this is the changed part
casper.page.injectJs('path/to/jquery-1.11.0.js');
var ip = this.evaluate(function() {
// return document.querySelector('#ip').innerText;
return $('#ip').text();
});
this.echo("\nYour public IP address is: " + ip);
});
casper.run();
这也有效:
// this is the changed part
var casper = require('casper').create({
clientScripts: ["path/to/jquery-1.11.0.js"]
});
casper.start("http://mikeyaworski.com/IP", function() {
var ip = this.evaluate(function() {
// return document.querySelector('#ip').innerText;
return $('#ip').text();
});
this.echo("\nYour public IP address is: " + ip);
});
casper.run();
然而,我仍然觉得奇怪的是 this other script ,我很好地使用了 jQuery,没有将它注入(inject)任何地方,甚至没有将它下载到我的计算机上。我想了解更多相关信息。
关于javascript - jQuery 不工作,但 document.querySelector 可以 (CasperJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21950730/