我正在使用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()添加到公式中,但它仍然没有在很多时候返回正确的元素位置。尤其是iFrames和Objects。也许他们是在DOM加载后定位的?无论哪种方式,任何人都有任何想法如何改进或改变方法以获得更准确的位置?
亲切的问候,
的Fab
答案 0 :(得分:3)
回归的位置是什么?怎么回事?
一些事情。
1)当调用page.evaluate
时,页面已经加载。这发生在page.open
时间。 window.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());
});