【问题标题】:Crop screenshot to element in PhantomJS将屏幕截图裁剪为 PhantomJS 中的元素
【发布时间】:2012-08-14 19:09:49
【问题描述】:

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

【问题讨论】:

    标签: jquery phantomjs


    【解决方案1】:

    您在page.evaluate 中运行的任何东西都无法从外部世界获得,执行是沙盒化的,并且受限于页面上下文。为了使其可用,请将其作为返回值,然后您就可以访问它。

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

    【讨论】:

    • is pizza.js 仍然可用我在 Github 上找不到它。
    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多