0

我正在尝试offset()使用 jQuery 获取“this”的滚动事件中的值,但为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 回答