3

我正在使用 PhantomJS 来获取页面上某些元素的位置,例如 iframe 或对象。目前我

page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", function() {
    page.evaluate(function() {
        // Select attr etc.. 
        position = $(this).position();
        offset = $(this).offset();
    });
});

我尝试将 $(window).load() 添加到公式中,但很多时候它仍然没有返回正确的元素位置。尤其是 iFrame 和对象。也许它们是在 DOM 加载后定位的?无论哪种方式,有人知道我如何改进或改变方法以获得更准确的位置吗?

亲切的问候,

工厂

4

1 回答 1

3

什么职位被退回?怎么不正确?

一些东西。

1)当page.evaluate被调用时,页面已经加载。有时会发生这种情况page.openwindow.onload永远不会在里面开火page.evaluate;它已经开火了。

2)我不知道this里面是什么page.evaluate

3) 在 PhantomJS 上下文中,没有真正的理由使用 jQuery。您最好使用标准结构,例如document.documentElement.scrollTop.

尝试这个:

page.evaluate(function() {
    console.log(document.documentElement.scrollTop);
    console.log(document.getElementById("my-frame").getBoundingClientRect());
});
于 2013-06-20T04:41:17.183 回答