2011-03-30 30 views
2

我有一个页面,不加载jQuery。该页面上包含的(在同一个域中)确实会加载jQuery。jQuery:我可以将函数绑定到父窗口的onscroll事件吗?

使用jQuery,是否可以将函数绑定到父页面的window对象的事件,即使它不加载jQuery?

访问父项window似乎不成问题;这个工程(至少在Firefox 4):

console.log($(parent)); // displays "jQuery(Window index.html)" in the console 

给予一定的情况下,我开发文档至内被加载,但我不控制父页面,所以我不能使用需要添加jQuery的解决方案。最终,我想要订阅父项windowonscroll事件,以在每次滚动发生在视口中时在中执行一个函数。

我已经试过(内):

function my_function() { 
    console.log('Scrolling...'); 
} 
$(parent).scroll(my_function); 

但是,没有工作。

任何帮助,将不胜感激。谢谢!


编辑:

这里是一个工作示例:

http://troy.onespot.com/static/stack_overflow/onscroll/parent.html

在该文件是在这里:

http://troy.onespot.com/static/stack_overflow/onscroll/iframe.html

+0

的两个您的工作演示链接被破坏。请修复它们或将其移除。 – Evildonald 2012-08-15 17:25:52

+3

他说17个月后:) – Kevin 2012-09-01 22:06:35

回答

1

如果您试图控制另一个域中的父页面,那么出于安全原因这是不可能的。

你可以找到many articles关于这个问题,如果这不是你的情况告诉我们,因为肯定还有另一个问题。

如果在同一个域中,怎么样使用这个:

$(文件)。就绪(函数(){$ (本).parent()滚动(函数(){//东西}); });

$(document).ready(function(){ 
    $(window.parent.document).scroll(function(){//stuff}); 
}); 
+0

两个窗口都在同一个域中。我更新了我的问题以澄清这一点。 – Bungle 2011-03-30 20:40:28

+0

谢谢Amr,但那没有奏效。我不希望parent()方法工作,因为它是为DOM遍历而设计的,而不是用于访问父窗口。 – Bungle 2011-03-31 17:59:33

+0

@Bungle试试我更新的代码 – 2011-03-31 19:03:09

3

尝试:

parent.onscroll = function() { ... }; 

更新:

试试这个,它为我工作:

$(parent.document).scroll(function() { ... }); 
+0

谢谢,但我想用jQuery来利用其名称空间事件功能(http://docs.jquery.com/Namespaced_Events)。我需要在整个脚本的各个位置绑定和解除绑定函数,而jQuery将使这更简单。令我困惑的是$(parent).scroll(my_function)好像应该起作用,但无论出于何种原因,它都没有。我希望能够做到这一点。 – Bungle 2011-03-30 22:10:58

+0

@Bungle那么,浏览器报告任何错误?如果它不起作用,那么浏览器应该报告一些错误.... – 2011-03-30 23:09:42

+0

没有错误(至少在Firefox 4中) - 这是一个工作示例:http://troy.onespot.com/static/stack_overflow/onscroll/parent .html – Bungle 2011-03-31 02:32:18

相关问题