2012-03-21 73 views
1

如何在其他瀏覽器(而不是IE)上爲swf設置鍵盤焦點的代碼。所有瀏覽器上的閃存鍵盤焦點

我知道,IE瀏覽器只是

document.getElementById('movieID').focus(); 

如何將其他瀏覽器?

+0

您的代碼沒問題,請在發佈此類問題之前,對代碼進行進一步調查並在論壇上進行更徹底的搜索。無論如何檢查[這個線程](http://stackoverflow.com/questions/4183325/focus-an-element-created-on-the-fly),一個可能的副本。 – 2012-03-21 19:21:25

+0

我認爲只適用於IE。 不適用於Chrome。 – 2012-03-22 00:53:25

+0

該線程可能會使焦點閃爍,但不會使鍵盤焦點閃爍。 – 2012-03-22 01:04:02

回答

2

本機支持焦點的唯一HTML元素是鏈接(<a>)和表單元素,例如<input>。要通過javascript製作HTML元素,您需要設置元素的tabIndex

(喬納森·斯努克寫了nice simple overview幾年前Mozilla provides a good overview of the topic和W3C討論keyboard focus in relation to ARIA。)

一旦Flash的SWF嵌入,可以重點關注新<object>元素,像這樣:

var flashvars = {}; 
var params = {}; 
var attributes = {}; 
var callbackFn = function(e){ 
    if(e.success){ 
     e.ref.tabIndex = "-1"; 
     e.ref.focus(); 
    } 
}; 

swfobject.embedSWF("myfile.swf", "myflashelement", "550", "400", "9.0.0", "expressInstall.swf", flashvars, params, attributes, callbackFn); 

如果您想了解更多信息,請在此SWFObject support thread中深入討論鍵盤焦點。

+0

將代碼放在腳本標籤內?並使用'myflashelement'作爲嵌入ID和myfile.swf作爲src? – 2012-03-22 12:04:16

+0

'expressInstall.swf'是什麼? – 2012-03-22 12:04:32

+0

我是否需要設置params.wmode ='opaque'? – 2012-03-22 12:04:50