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.open時に起こります。window.onload内部で発砲することはありませんpage.evaluate。それはすでに発射されています。

this2) の中に何が入っているかわかりません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 に答える