Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 PhantomJS未从同一URL加载.js_Javascript_Phantomjs - Fatal编程技术网

Javascript PhantomJS未从同一URL加载.js

Javascript PhantomJS未从同一URL加载.js,javascript,phantomjs,Javascript,Phantomjs,javascript位于我正在打开的同一个网站上 示例:http://test.site.com js=>http://test.site.com/cache/6343019445fb7d95bd2bd09c5bbfb002.js 我还包括了来自googleapis的jQuery,这似乎是在加载!我试着从类似这样的事件中获取一些数据,但什么都没有显示 这是我的测试代码: var page=require('webpage').create(); page.viewportSize={ 宽度:13

javascript位于我正在打开的同一个网站上

示例:
http://test.site.com

js=>
http://test.site.com/cache/6343019445fb7d95bd2bd09c5bbfb002.js

我还包括了来自googleapis的jQuery,这似乎是在加载!我试着从类似这样的事件中获取一些数据,但什么都没有显示

这是我的测试代码:

var page=require('webpage').create();
page.viewportSize={
宽度:1366,
身高:720
};
page.settings.loadImages=true;
page.settings.localToRemoteUrlAccessEnabled=true;
page.settings.javascriptEnabled=true;
page.settings.webSecurityEnabled=false;
page.settings.xsauditingEnabled=false;
var uri='1〕http://test.site.com';
page.onConsolleMessage=函数(msg、lineNum、sourceId){
log('console:'+msg+'(来自“'+sourceId+'”中的第#'+lineNum+'行));
};
page.onResourceError=函数(resourceError){
console.log('无法加载资源(#'+resourceError.id+'URL:'+resourceError.URL+'));
console.log('错误代码:'+resourceError.errorCode+'。说明:'+resourceError.errorString);
};
page.onResourceTimeout=函数(请求){
log('Response(#'+request.id+'):'+JSON.stringify(request));
};
page.onError=函数(消息,跟踪){
var msgStack=['ERROR:'+msg];
if(trace&&trace.length){
msgStack.push('TRACE:');
trace.forEach(函数(t){
msgStack.push(“->”+t.file+”:“+t.line+(t.function?”(在函数“+t.function+”):”)中);
});
}
console.error(msgStack.join('\n'));
};
page.onLoadFinished=函数(){
setTimeout(函数(){
console.log(page.content);//有吗
console.log('render');
page.render('test.png');
phantom.exit();
}, 4000);
};
page.open(uri,函数(){
console.log('loaded');
});
除了
呈现
加载
和页面内容之外,我看不到其他控制台消息。
我做错了什么?

您必须评估页面。我相信是这样的

page.evaluate(function () {
    // This is after page is evaluated and javascript is run
});

请注意,evaluate不允许您访问JS函数或变量,它只为您运行它。如果您需要从Phantom访问JS代码,您需要将JavaScript代码放在
页面中。自己评估
,以便您可以
控制台。记录
或根据需要进行操作。

您认为为什么没有加载.JS?代码中没有对此进行检查。我在.js文件中添加了一些消息,它们没有通过
onsolemessage
显示。另外,js应该对文档进行可见的更改,这些更改应该反映在屏幕截图中,但是他们没有看到js文件在
onResourceReceived
事件中,因此显然它已下载,但出于某种原因它没有执行?!好的,我发现问题出在.js文件代码的某个地方。浏览器不会显示错误或警告,phantomjs也不会通过
onError
事件显示错误或警告。。。我现在唯一的选择是逐步删除部分代码,看看是哪一部分导致了这个问题:(我怀疑您运行的是PhantomJS 2.x。众所周知,它会隐藏错误,因此您应该使用PhantomJS 1.9.8进行尝试。这只对在页面上下文中运行函数有用。但我尝试了它来测试console.log是否工作,并查看我的脚本函数是否存在。但是我看到
window.jQuery
…我对phan非常生疏。)tom JS,但我相信evaluate不会让您访问JS函数或变量,它只会为您运行。如果您需要这样做,您只需将javascript代码放在
页面中。自己评估
,以便您可以
控制台.log
或根据需要进行操作。。