2012-03-30 64 views
0

我在看jQuery bbq插件,在他的代碼的任何地方都找不到任何提及的document.hashjQuery bbq ...烤架在哪裏?

我想獲得哈希在行1094

function get_fragment(url) { 
    url = url || location.href; 
    return '#' + url.replace(/^[^#]*#?(.*)$/, '$1'); 
}; 

而在818設置散列但爲什麼用這些代替location.hash

而且這是怎麼回事用this

jq_bbq.pushState = jq_bbq_pushState = function(params, merge_mode) { 

豈不jq_bbq_pushState = function...夠嗎?

回答

3

關於你的第二點 - 與location.hash - 我不能確定,但​​早期版本的瀏覽器可能有問題location.hash
我的猜想是作者需要依靠hash屬性,所以他實現了自己的。
如果您在谷歌搜索ie6 location.hash,您不必挖掘信息,看看有很多抱怨。

+0

實際上,pushState是一種新的瀏覽器歷史記錄方法,它允許您手動操作歷史記錄並存儲瀏覽器的狀態。 https://developer.mozilla.org/zh/DOM/Manipulating_the_browser_history#The_pushState().C2.A0方法 – Wil 2012-03-30 12:51:09

+0

@WilliamGolden對不起,我只是提到了問題的第二點,帶'location.hash'的那個。查看更新。 – 2012-03-30 13:23:36

1

document.hash不存在,您可以通過document.location.hash訪問散列。 get_fragment函數似乎做同樣的事情。 我猜測作者使用了一個自定義函數,因爲他不知道document.location.hash。

jq_bbq.pushState = jq_bbq_pushState = function(params, merge_mode) { 

這增加了所述函數應用於所述jq_bbq命名空間/物體,並且還允許與本地變量jq_bbq_pushState引用它。

+0

'jq_bbq.pushState'一個人的全球和一個本地? Ben def也知道'location.hash' – qwertymk 2012-03-30 12:21:20

+0

它不是全局的,除非bbq是對窗口的引用,但我不這麼認爲。 (我只是從代碼中扣除這個,我不知道框架) 這可能是希望通過jq_bbq命名空間公開私有函數的結果。 – 2012-03-30 12:25:33