phantomJS includeJs方法总是无法通过取消操作加载脚本

时间:2016-12-08 20:02:15

标签: javascript phantomjs

我正在尝试将一些脚本加载到phantomjs访问的页面中。我正在使用2.1.1 btw。

我有点在这里敲我的头,因为我尝试了各种各样的东西,它们似乎都以同样的方式失败,这让我觉得我可能缺少配置设置或其他东西。

任何我正在尝试的人:

//I dont actually care about using jquery, just trying loading from different servers
page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js');

page.includeJs('https://aSiteIControl.com/jquery.min.js');

然后我有一个像这样的onResourceError处理程序:

page.onResourceError = function(resourceError) {
    console.error(resourceError.url + ': ' + resourceError.errorString);
    console.error(JSON.stringify(resourceError))
};

无论我尝试过什么都输出这个:

https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js: Operation canceled
{"errorCode":5,"errorString":"Operation canceled","id":1,"status":null,"statusText":null,"url":"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"}

无论我使用什么协议或脚本使用什么服务器,这似乎都会发生。此外,这两个示例都可以在浏览器中访问。任何人都知道我可能做错了什么?

要清除已接受的答案,因为没有代码:

看看这个问题:

PhantomJS: injecting a script before any other scripts run

2 个答案:

答案 0 :(得分:3)

我打赌你可以直接包含本地脚本。请尝试:

    (page.evaluate(function() {
      var script = document.createElement('script');
      script.src = 'http://urlToScript.com';
    }))

答案 1 :(得分:2)

这可能是由于超时或在加载js时调用幻像对象的exit()函数,或者如果您尝试打开另一个页面。你可以添加所有代码吗?

基于documentation,您可以包含外部JS:

  

包含来自指定网址的外部脚本(通常是远程位置)