2011-12-08 47 views
6

我正在尋找它,以便當用戶加載我們的網頁時,它會檢查它們是否在移動設備上,然後將它們重定向到我們網站的移動版本,但保留原始的哈希標記從他們跟隨的鏈接。我試着用JavaScript中的哈希標籤設置新位置,它在Chrome中工作,但在Safari中不起作用。我讀過這只是Safari的一些功能。有沒有解決這個問題?如何重定向到移動網站,但保留散列標籤?

+0

你能告訴我們你的代碼? – JamesHalsall

+0

是的,我只是在JavaScript中設置Window.location。事實證明,Safari不支持哈希標記重定向,考慮到iPhone和iPad都是Safari,這非常煩人。所以有些js喜歡這個window.location =「http://www.example.com/#page2」會把你帶到網站,但它不會像hash標籤所說的那樣跳轉到page2。重定向時,Safari會剝離哈希標記。 –

+0

你在哪裏讀過*這只是Safari做的* *? – alex

回答

3

實際上,我們剛剛收到了來自客戶的非常類似的錯誤報告。

對於我們來說,場景涉及#quicklogin/abc123形式的hashtag,只有在Safari中查看網站時纔會出現。這是客戶端加載的初始URL的一部分,它會爲他們提供備用登錄屏幕。當直接訪問Safari中的URL時,瀏覽器會刪除整個標籤並忽略它。

當我們將其更改爲類似#quicklogin/test(或任何其他僅包含字母字符的散列)時,它工作正常。在加載網站時,它也工作得很好,然後在兩個單獨的步驟中手動應用散列標籤。

所以我們的結論是Safari中包含數值的井號標籤可能有問題。

+3

我們測試了一下,*只有*小寫字母可以工作('a-z')。至少'=','_'和'Z'導致Safari刪除整個片段。 – Timmmm

3

您必須通過使用javascript重定向(因爲javascript可以讀取散列值)或通過基於用戶代理條件返回不同的html來完成此操作。

瀏覽器應該通過302保留散列片段,但通常不會(請參閱下面的3歲webkit bug),否則散列片段不會發送到服務器,因此無法手動處理。

https://bugs.webkit.org/show_bug.cgi?id=24175

4

你應該逃脫「#」符號,一切都將是美好

+0

這不會比您在另一個問題上發佈的其他副本更有意義。 –

+2

這實際上有效......用「%23」代替「#」就像魅力一樣!謝謝! – user1265146

相關問題