2011-03-30 53 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

相關問題