我知道可以使用page.clipRect()
在PhantomJS中任意裁剪屏幕截图:
page.clipRect = {
top: element_top,
left: element_left,
width: element_width,
height: element_height
};
所以,我试图使用jQuery获取特定元素的定位和宽度/高度。但是,我的代码(基于PhantomJS rasterize.js example的最后一部分)不起作用;它只保留默认值。
我想我必须在变量范围方面做错了。我怎样才能让它发挥作用?
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
} else {
var element_top = 0;
var element_left = 0;
var element_width = 200;
var element_height = 200;
page.evaluate(function() {
var $element = $('h1');
var offset = $element.offset();
element_top = offset.top;
element_left = offset.left;
element_width = $element.width();
element_height = $element.height();
});
window.setTimeout(function () {
page.clipRect = {
top: element_top,
left: element_left,
width: element_width,
height: element_height
};
page.render(output);
phantom.exit();
}, 200);
}
});
答案 0 :(得分:1)
您在page.evaluate
内运行的任何内容都无法从外部获取,执行将被沙箱化并限制在页面上下文中。为了使它可用,将其作为返回值,然后您可以访问它。
看看包含pizza.js
的PhantomJS,其中比萨饼的名单将被退还给来电者。