我有一個單頁應用程序,它使用Knockout.js進行數據綁定,Sammy.js用於路由客戶端(基於哈希)的URL。Sammy.js路由沒有從IE10中的敲除鏈接鏈接發射
但是,我在Internet Explorer中看到一個奇怪的問題:有時,點擊鏈接時,會改變瀏覽器地址欄中的URL,但相應的Sammy路徑不會執行。它不會發生每一次(但我可以一貫重現錯誤),並且它只發生在IE10(Chrome每次都能正常工作)。它似乎也與Knockout有關,因爲一組硬編碼的鏈接不會出現相同的問題。
爲了說明,我已經剝離的一切,但最低限度重現問題和創建了兩個jsbin例子:
實施例1(與敲除):http://jsbin.com/aretis/2/
要查看問題,打開上面的鏈接並點擊「記錄#1」,然後點擊「Baz」,然後再次點擊「記錄#1」。記錄1的URL將出現在地址欄中,但該記錄的路由不會附加到列表中。
實施例2(不敲除):http://jsbin.com/amivoq/1/
在本例中,我的記錄鏈接,而不是一個數據綁定列表的靜態列表。點擊任何鏈接(以任何順序)將導致該路由被添加到列表中(因爲它應該)。
提醒一下,這些必須在IE中運行才能重現問題。
任何想法?
我現在在使用IE 10的應用程序中遇到同樣的問題。您是否暴露了激活方法?當來回切換時會被調用嗎? – Boone
我通過綁定到$(window).on(「hashchange」)並編寫我自己的URL路由器來解決問題(也許「解決」是更好的詞組)。我的需求非常簡單,我懷疑我只用了大約10%的Sammy.js的能力。我仍然對我的問題的來源感到好奇,所以我將這個問題留下了。 –
你可以用sammy JS重新創建示例1嗎? 我還基於SammyJS創建了自己的路由器。 @Matt Peterson,謝謝你的提示。我不知道'hashchange'事件。我正在檢查窗戶。帶定時器的位置:)。 – Damien