0

jQueryで「this」のスクロールイベント内の値を取得しようとしていoffset()ますが、「未定義」を取得していthisます。

私の特定のユースケースのコードと、何が起こるかについてのコメント:

$canvas_frame.contents().find(".ar4 .Tm.aeJ").scroll(function(event){
        log("SCROLLING!");
        log(this); // successfully logs the DOM element in the console
        log($(this).offset()); // ERROR
        log($(this).css("top")); // works
    });
};

そのため、すべての要素が正常に検出されますが、jQuery セレクター要素で .offset() メソッドを呼び出すと失敗します。Uncaught TypeError: Cannot read property 'pageYOffset' of undefined

失敗せずにその値を取得するにはどうすればよいですか?

アップデート

この例で実際に表示されるエラー メッセージを修正しました。

更新 2

私が気づいたのは、最初はjQueryの結果が空であるかのように、要素がコンソールに記録されるのに少し時間がかかることですが、その後は入力されます.何かアイデアはありますか?

アップデート 3

シンプルなページで動作する JSFiddle でデモを作成しました。http://jsfiddle.net/victorbstan/PBfNu/ ただし、私のコードは iframe 内の要素を見つけようとしています。スクリプトは Chrome 拡張機能を介してページに埋め込まれています。なぜ自分のコードが機能しないのか、まだ疑問に思っています。

4

1 に答える 1

-1

これを回避する方法がまだわからないため、これは完全な答えではありません。しかし、それは役立つかもしれません。

これはhttp://crbug.com/20773が原因だと思います。私はもともとこのパッチを使用してみました:

$ sed -ri 's/(win\.page[XY]Offset)/win \&\& \1/' jquery.js

その時点でエラーは消えnullましたが、結果として得られることもありましたoffset()

于 2013-01-16T14:38:38.800 に答える