Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery不工作,但document.querySelector工作(CasperJS)_Javascript_Jquery_Casperjs - Fatal编程技术网

Javascript jQuery不工作,但document.querySelector工作(CasperJS)

Javascript jQuery不工作,但document.querySelector工作(CasperJS),javascript,jquery,casperjs,Javascript,Jquery,Casperjs,网站在带有id=“IP” 当我使用returndocument.querySelector('#ip').innerText显示正确的IP地址,一切正常 但是,当我使用return$('#ip').text()时显示null 你知道为什么吗 var casper = require('casper').create(); casper.start("http://mikeyaworski.com/IP", function() { var ip = this.evaluate(fun

网站在带有
id=“IP”

当我使用
returndocument.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();

我最终将jQuery从下载到了我计算机上的一个地方

然后我在这个话题上遵循了这个原则,它似乎奏效了(奇怪的是,因为在过去,我不需要遵循这些“规则”)

我的代码是这样结束的:

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();


然而,我仍然觉得奇怪的是,在上,我使用jQuery很好,没有在任何地方注入它,甚至没有将它下载到我的计算机上。我想了解更多这方面的信息。

显然,页面上早期版本的jQuery可能会与测试中使用的jQuery版本发生冲突。如果升级版本,两个jquery不会冲突。这与另一个线程有关:


有其他方法可以在不更改jQuery版本的情况下修复它。

您确定
$
jQuery
?也许您加载了其他一些库,这是有冲突的。@Barmar我发布的是我的全部代码,我没有对任何库做过任何操作(据我所知)。我一直在关注答案。不过,这并不意味着
$
就是jQuery。
console.log($.fn.jquery)
告诉你什么?你加载jquery了吗?@Barmar:在
evaluate
函数中记录它不会起任何作用。在
evaluate
函数之外记录该值会给出
ReferenceError:找不到变量:$
,这是我所期望的。没有,我想我还没有加载jQuery。然而,在另一个例子中,我没有“加载jQuery”(我想),结果它成功了。