我有以下javascript代码,在页面加载时请求焦点。
这段代码在Firefox和IE7中完美运行,但在Chrome和Safari中似乎根本不移动焦点。如何使它在所有浏览器中都正常工作?
document.getElementById("MyFlashFile").focus();
我有以下javascript代码,在页面加载时请求焦点。
这段代码在Firefox和IE7中完美运行,但在Chrome和Safari中似乎根本不移动焦点。如何使它在所有浏览器中都正常工作?
document.getElementById("MyFlashFile").focus();
我花了几个小时在互联网上搜索,最终找到了一个解决方案,可以在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库嵌入了Flash。如果没有,请将变量f设置为包含Flash动画的对象或嵌入标记。
于2012年5月5日编辑:不幸的是,似乎tabIndex
的解决方法不再适用于所有浏览器(Chrome / Safari)和操作系统的组合。
例如,当前Windows上的Chrome 18会失败。
请参见下面提供的链接,由Christian Junk提供,以获取问题解决的状态。
if
语句中放置一个警报。 警报确实显示出来,但是闪存没有聚焦。 我还尝试创建了一个只有文本框(没有闪存)的简单页面,并将焦点设置为该文本框,在那里确实起作用,但是对于闪存页面则不起作用。 我还尝试使用document.getElementById
而不是swfobject.getObjectById
,结果仍然相同。 因此,看起来还有其他问题,因为我们知道focus()
函数确实起作用并被调用。 这在IE和FF中都有效,但在Chrome或Safari中无效。 有什么建议吗? - Travesty3params.wmode =“opaque”;
。对我来说,在Chrome和IE中它就能完美地工作了,但是FF和Safari比以前更糟糕了。现在,无论您是否单击文本字段,都无法键入任何内容。我想我可以进行浏览器检查,只为Chrome设置该参数,但如果有更好的解决方案,我真的很想知道。 - Travesty3在Chrome浏览器中似乎存在一个漏洞:
"window.document.getElementById('swfID').focus() 不能用于Flash对象"
http://code.google.com/p/chromium/issues/detail?id=27868
我试图找到解决方法,但是未能找到;(
敬礼, Christian
wmode="opaque"
。