2016-04-24 54 views

回答

1

您可以使用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,嘗試將其讀回,如果無法讀取它,則顯示錯誤消息。這應該適用於您可能從未聽說過的瀏覽器。

+0

謝謝。如何在.on('load')語句中執行其他操作?我面對的問題是Firefox iOS在$(#'myFrame')。on('load',function(e))上有問題,但是如果我使用$('#myFrame')。 。您可以退房並玩我的小提琴https://jsfiddle.net/cy87j70t/8/ –

+0

似乎有一個與Firefox處理onload事件有關的錯誤。 (https://bugzilla.mozilla.org/show_bug.cgi?id=444165)據我所知,這應該不會影響iOS版本,因爲iOS上的每個瀏覽器都應該使用相同的呈現引擎。但是由於您沒有在iOS上的Chrome上看到此錯誤,因此可能值得考慮。你也可以嘗試使用DOMContentLoaded事件,如果這個錯誤真的是怪罪的話,這個事件不應該受到影響。 – w3re

+0

爲了檢測.on('load')是否未發生,您可以使用合理的超時作爲最後的手段。有點像〜100ms。如果幀在〜100ms內沒有響應,那麼總會出現問題。大多數用戶很難注意到100ms。如果你能保證iFrame的加載速度更快,那麼這個超時當然應該更短。 – w3re