2012-02-27 136 views
1

我想檢查jQuery的是否有.hashchange方法參照窗口對象像檢查jQuery的方法是否存在

$(window).data('events').hasOwnProperty('hashchange') ? 
    $(window).hashchange(hashChange) : 
    window.onhashchange = hashChange; 

,但我不斷收到一個「遺漏的類型錯誤:無法調用‘hasOwnProperty’未定義「的兩個瀏覽器支持&不支持該功能。有任何想法嗎?

回答

4

的一種方法是看屬性僅僅是未定義

if ($(window).hashchange === undefined) { 
    // Not defined 
} 

注:這實際檢查值是否被定義VS名。它可以用一個明確的undefined值來定義價值,但兩者大概相當於爲您的方案

+0

我waaaaaaaaay慢^ _ ^'+ 1' – Neal 2012-02-27 21:14:29

+0

試圖頂一個它沒有工作,這是我的解決方案 「的typeof($(窗口).hashchange)=== '未定義' \t \t window.onhashchange = hashChange: \t \t $(窗口).hashchange(hashChange);」 – 2012-02-27 21:21:08

0
$(window).data('events') === undefined 

爲此它沒有性能。


你需要做的是第一個確保數據中包含的對象:

var window_data = $(window).data('events'); 

if(window_data !== undefined){ 
    window_data.hasOwnProperty('hashchange') ? 
    $(window).hashchange(hashChange) : 
    window.onhashchange = hashChange; 
} 
else { 
    window.onhashchange = hashChange; 
} 

+0

但它,它只是沒有及時裝載什麼 – 2012-02-27 21:17:16

+0

@MariusMiliunas嘗試在控制檯此頁面。 – Neal 2012-02-27 21:35:24

+0

我明白你在說什麼,但如果方法是通過插件連接到窗口屬性,比它的屬性,例如,複製在控制檯 - $(窗口).resize(函數(){的console.log(」東西「)}) - 然後複製 - $(窗口)。數據(」事件) – 2012-02-27 21:38:33