我在調用頁面時請求焦點以下JavaScript。Safari和Chrome瀏覽器的對象焦點問題
此代碼與Firefox和IE7完全兼容,但Chrome和Safari似乎並沒有將焦點放在所有位置。如何使它適用於所有瀏覽器?
document.getElementById("MyFlashFile").focus();
我在調用頁面時請求焦點以下JavaScript。Safari和Chrome瀏覽器的對象焦點問題
此代碼與Firefox和IE7完全兼容,但Chrome和Safari似乎並沒有將焦點放在所有位置。如何使它適用於所有瀏覽器?
document.getElementById("MyFlashFile").focus();
確保整個頁面已經被渲染後,該代碼被調用。它可能被稱爲HTML所引用的HTML之上,所以該元素將不存在。
各種JavaScript框架有實用程序告訴你何時DOM is ready。
不幸的是,沒有辦法確保您可以將焦點設置爲適用於所有瀏覽器的Flash文件。 IE和Firefox已經解決了這個問題(大部分情況),但Chrome和Safari都是基於Webkit的,它沒有解決方案。
如果您曾在YouTube或其他視頻/ Flash網站上發現您首先看到的東西是誘使您點擊播放器,那是由於此問題。
一位開發人員想出了一個聰明的解決方法,但它的確涉及到將一些ActionScript添加到您的Flash文件,如果您正在構建一個通用播放器,這可能是一個痛苦的屁股。
加里·畢曉普:Fixing Firefox Flash Foolishness
的解決方案另一類是您的wmode設置爲不透明。我在某些情況下聽說過這個方法,但是會在文本區域搞砸遊標。我也沒有太多的運氣,但你可以嘗試一下。
您可以在bugzilla找到更多有關無焦點錯誤的信息。
亞當,請查看下面的CláudioSilva的解決方案。它爲我工作:)。 – Anvaka 2010-09-15 16:05:43
它似乎有在瀏覽器的錯誤: 「window.document.getElementById( 'swfID')專注()不工作的Flash對象」
http://code.google.com/p/chromium/issues/detail?id=27868
我VE試圖找到一個解決辦法,但我沒能找到一個;(
問候, 基督教
它花了我幾個小時搜索互聯網,但最終我找到了一個適用於最新版本的IE,Firefox,Chrome和Safari的解決方案。 下面的代碼解決了這個問題爲好:
<head>
<script type="text/javascript" src="swfobject.js"></script>
<script>
function setFocusOnFlash() {
var f=swfobject.getObjectById('myFlashObjectId');
if (f) { f.tabIndex = 0; f.focus(); }
}
</script>
</head>
<body onload="setFocusOnFlash()">
這個例子假設閃光燈使用SWFObject的庫嵌入。如果不是,則應該將f變量設置爲保存Flash影片的Object或Embed標記。
上編輯5 2012年5月:嗯,可惜似乎tabIndex
解決方法不再適用於瀏覽器(Chrome/Safari瀏覽器)和操作系統的所有組合。例如,目前Windows上的Chrome 18失敗。
查看下面的鏈接,由提供基督教垃圾,以獲得問題的解決狀態。
這不適合我。什麼是爲getObjectById()指定的ID?通過attributes.id或swfobject.embedSWF()調用的第二個參數提供給swfObject的ID? – BadmintonCat 2011-03-26 04:18:26
除了克勞迪奧·席爾瓦的答案,你需要設置wmode="opaque"
這仍然無法在Chrome for Windows的當前構建工作(版本28.0.1500.72米)沒有提供解決方法的工作,要麼。 – Josh 2013-07-26 21:44:04