gpt4 book ai didi

jquery - 在 PhantomJS 中将屏幕截图裁剪到元素

转载 作者:行者123 更新时间:2023-12-01 04:58:59 26 4
gpt4 key购买 nike

我知道可以使用 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);
}
});

最佳答案

您在 page.evaluate 中运行的任何内容都无法从外部世界获得,执行过程被沙箱化并限制在页面上下文中。为了使其可用,请将其作为返回值,然后您就可以访问它。

看一下 PhantomJS 包含的 pizza.js,其中比萨店的列表返回给调用者。

关于jquery - 在 PhantomJS 中将屏幕截图裁剪到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11959139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com