2012-03-21 25 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