为什么Phantom.js没有评估我的Backbone应用程序的工作?
page.open(My_url, function(status) { page.evaluate(function() { var html = document.documentElement.outerHTML; return html; }, function(result){ res.send(result); }); });
我有一个骨干应用程序。 “My_url”指向该骨干网页。
当我运行这个代码时,outerHTML不包括渲染的视图。 它只是基本的CSS /脚本/容器持有人。
这就像骨干的应用程序根本没有运行。 如何使评估()返回完全呈现的骨干应用程序(所有的Ajax调用和东西)?
毕竟,这就是Phantom.js的要点
加载后立即评估页面并不总是足够的。 有时,由于JavaScript写在页面上的方式,你将不得不等待并允许页面的JavaScript执行。 为此,我build议您在执行评估之前尝试添加一个等待。 例如
function ( status ) { if ( status === 'fail' ) { phantom.exit( 1 ); return; // essential, if you don't, below will be executed } window.setTimeout( function () { var result = page.evaluate( function () { var html = document.documentElement.outerHTML; return html; } ); res.send( result ); }, 1000 // wait 1,000ms (1s) ); }
如果你发现有必要等待,那么你可能想等一些东西。 为此,请在Internet上查找waitFor
或类似的函数,以便您的脚本可以持续轮询,直到出现特定的DOM元素。
- Backbone.js和Node.js有什么区别? 哪个最好?
- 如何使用browserify捆绑骨干应用程序?
- 处理API模型validation错误以发送回客户端
- 无法收听Dsektop窗口的默认closuresbutton
- 在骨干网中重新使用客户端validation的回环模型?
- HTTP响应头中'Allow'和'Access-Control-Allow-Methods'之间的区别?
- Upvote和Downvote主干,快车和mongoose
- Backbone Marionette和Webpack – Uncaught TypeError:无法读取未定义的属性'radio'
- jQuery的手机redirect或更改url时,网页没有任何CSS