2009/06/19

[生活」[Programming] 糾正一個 javascript 的錯誤引用,誰來告訴我錯與對?

細談 location.href 與 location.replace 的差別與實務應用 這篇裡頭提到 a link, 跟 location.href , location.replace 的差別:

1. 直接用 <a href="a.htm"> 連結的作法

瀏覽器會送出 Referer 這個 HTTP Header
瀏覽器會紀錄連結的歷史紀錄 ( 好讓瀏覽器的 上一頁 、 下一頁 按鈕可以運作 )
2. 透過 JavaScript 的 location.href 指派網址

瀏覽器不會送出 Referer 這個 HTTP Header
瀏覽器會紀錄連結的歷史紀錄 ( 好讓瀏覽器的 上一頁 、 下一頁 按鈕可以運作 )
3. 透過 JavaScript 的 location.replace 傳入網址

瀏覽器不會送出 Referer 這個 HTTP Header
瀏覽器不會紀錄連結的歷史紀錄! ( 瀏覽器將無瀏覽歷史紀錄 )

言之鑿鑿,本著求知的精神,我使用了最新下載的 firefox 3.5 rc1 實作不是這樣的結果,而是:
三個都會有 referer
三個都會有 history
# 測試方法 清除 history -> key 連結 -> shell export 變數 -> 看 history 記錄

為什麼差異存在呢?因為... 是的,這是瀏覽器各自決定的行為了,在 HTTP 通訊協定裡頭只規定了 referer 的意義做為可以迴向的資源連結參考,如此而已。至於何時該發出這個 referer 參考,就各自表述。故而,在各個瀏覽器間存在差異,是可想而知的。

那麼,這篇「有問題」的文章(畢竟有可能在某個瀏覽器某個版本底下,其實是這樣沒錯),多少人信以為真了?
就像之前大家興高釆烈的在傳,晚上十點過後台電的優惠電價方案一樣。網路上傳的沸沸揚揚的,有多少真實性存在著?每一篇轉載﹑每一篇引用的背後,如果不能養成懷疑真理的思考,輕微的就只是鬧笑話,嚴重的就變成人家的幫兇。

// 會不會太嚴肅了? :p

簡單的說一句,就是:看網路文章,先想一下吧?

0 意見: