這是從Append within Append, Iframe within Append in Jquery的JavaScript檢測iOS版的Firefox
跟進我實現了代碼工作對大多數瀏覽器,但在Firefox移動iOS不工作。任何人都可以啓發我如何檢測iOS Firefox,以便我可以向用戶顯示錯誤?
我讀了關於功能檢測的modernizr,但似乎沒有檢測到Firefox沒有寫入iframe(如果刷新)。所以我希望現在只顯示一個錯誤。
這是從Append within Append, Iframe within Append in Jquery的JavaScript檢測iOS版的Firefox
跟進我實現了代碼工作對大多數瀏覽器,但在Firefox移動iOS不工作。任何人都可以啓發我如何檢測iOS Firefox,以便我可以向用戶顯示錯誤?
我讀了關於功能檢測的modernizr,但似乎沒有檢測到Firefox沒有寫入iframe(如果刷新)。所以我希望現在只顯示一個錯誤。
您可以使用window.navigator.userAgent屬性通過JS讀取用戶代理。
參見:https://developer.mozilla.org/nl/docs/Web/API/NavigatorID.userAgent
對於Firefox的具體數值見:https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference)
它仍然會建議做功能檢查,而不是檢查用戶代理字符串,因爲有可能是其它瀏覽器出來在那裏它不起作用。
如果您無法確定要檢查哪種特定功能來區分您的情況,可以在嘗試寫入iFrame後始終檢查是否成功。因此,簡單地將一些隨機數據寫入iFrame,嘗試將其讀回,如果無法讀取它,則顯示錯誤消息。這應該適用於您可能從未聽說過的瀏覽器。
謝謝。如何在.on('load')語句中執行其他操作?我面對的問題是Firefox iOS在$(#'myFrame')。on('load',function(e))上有問題,但是如果我使用$('#myFrame')。 。您可以退房並玩我的小提琴https://jsfiddle.net/cy87j70t/8/ –
似乎有一個與Firefox處理onload事件有關的錯誤。 (https://bugzilla.mozilla.org/show_bug.cgi?id=444165)據我所知,這應該不會影響iOS版本,因爲iOS上的每個瀏覽器都應該使用相同的呈現引擎。但是由於您沒有在iOS上的Chrome上看到此錯誤,因此可能值得考慮。你也可以嘗試使用DOMContentLoaded事件,如果這個錯誤真的是怪罪的話,這個事件不應該受到影響。 – w3re
爲了檢測.on('load')是否未發生,您可以使用合理的超時作爲最後的手段。有點像〜100ms。如果幀在〜100ms內沒有響應,那麼總會出現問題。大多數用戶很難注意到100ms。如果你能保證iFrame的加載速度更快,那麼這個超時當然應該更短。 – w3re