我使用PhantomJS来截屏我的网站。
在使用jQuery Ajax调用加载数据而不是请求给定remoteUrl
的网页上,PhantomJS会请求当前的网页URL。这导致将当前页面重新包含到给定示例的当前页面中:
此代码在我尝试屏幕捕获的网页上的$('document').ready()
上执行:
remoteUrl = $('#my-placeholder').data('api-url');
$.post(
remoteUrl,
{
foo: bar
},
function(response){
$('#my-placehoder').html(response);
// instead of retrieving remoteUrl's content,
// result contains the same content as current page
}
);
以下是我与PhantomJS一起使用的代码:
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit();
} else {
page.evaluate(function() {
document.body.bgColor = 'white';
});
var arr = page.evaluate(function () {
var pageWidth = document.body.clientWidth;
var pageHeight = document.body.clientHeight;
return [pageWidth, pageHeight];
});
page.viewportSize = { width: arr[0], height: arr[1] };
page.render(output);
phantom.exit();
}
});
PhantomJS对此有何限制?或者我做错了什么?
我一直在寻找可以帮助我解决这个问题的任何线索,但谷歌仍然没有帮助。谢谢!
编辑:好的,经过一些错误的测试&控制台消息绑定,我得到了这个
TypeError: 'undefined' is not a function (evaluating '$(".is-clickable:not(.is-disabled)").clickEvent()')
:9327
:4
:4
:4
在常规浏览器中不会出现这种情况。它似乎与jQuery无法使用有关?