PhantomJs:使用$ .POST的网页加载数据的屏幕截图失败

时间:2014-06-27 08:45:14

标签: jquery ajax phantomjs screen-capture

我使用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无法使用有关?

0 个答案:

没有答案