jQuery: можно ли привязать функцию к событию onscroll родительского окна? - PullRequest
2 голосов
/ 30 марта 2011

У меня есть страница, которая не загружает jQuery. <iframe>, включенный на этой странице (в том же домене), загружает jQuery.

Используя jQuery, возможно ли привязать функцию к событию объекта window родительской страницы, даже если она не загружает jQuery?

Доступ к родителю window не кажется проблемой; это работает (по крайней мере, в Firefox 4):

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

Чтобы дать некоторый контекст, я разрабатываю документ для загрузки в <iframe>, но я не управляю родительской страницей, поэтому я не могу использовать решение, которое требует добавления jQuery. В конечном итоге я хочу подписаться на событие onscroll родительского window для выполнения функции в <iframe> каждый раз, когда прокрутка происходит в области просмотра.

Я пытался (в пределах <iframe>):

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

Однако это не сработало.

Буду признателен за любую помощь. Спасибо!


EDIT:

Вот рабочий пример:

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

Документ в <iframe> находится здесь:

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

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

Попробуйте:

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

Обновление:

Попробуйте, это работает для меня:

$(parent.document).scroll(function() { ... });
1 голос
/ 30 марта 2011

Если вы пытаетесь управлять родительской страницей, находящейся в другом домене, то по соображениям безопасности это невозможно.

И вы можете найти много статей об этой проблеме, если этоне ваш случай, сообщите нам, потому что уверен, что есть другая проблема.

Если в том же домене, как насчет использования этого:

$ (document) .ready (function () {$ (this) .parent (). scroll (function () {// stuff});});

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