某些网站在窗口加载时设置focus
元素。如果我iframe那个网站,似乎无法以编程方式将焦点设置在父窗口上。这只发生在IE
(9)和Firefox
(19),Opera / Safari / Chrome很好。
<script>
window.onload = function() {
setTimeout(function() {
// this does not focus #foo
document.getElementById("foo").focus();
// or more seconds that enough to see the iframe focus
}, 3000);
};
</script>
<input id="foo" type="text" value="foo" /><br />
<iframe width="800" height="500" src="http://www.bing.com" />
是否有人知道此问题的解决方法?
答案 0 :(得分:5)
得到答案,现在它适用于所有浏览器
<script>
window.onload = function() {
// blur the iframe
document.getElementById("bing").blur();
// set focus on #foo
document.getElementById("foo").focus();
// when iframe tries to focus, focus #foo
document.getElementById("foo").onblur = function() {
this.focus();
};
};
</script>
<input id="foo" type="text" value="foo" /><br />
<iframe id="bing" width="800" height="500" src="http://wwww.bing.com" />
答案 1 :(得分:1)
如果我已正确阅读此内容,您只需要阻止焦点从父窗口转移到iframe中的元素。
我会使用&#39; onfocus&#39;触发iframe元素以将焦点切换回您的页面,如下所示:
<iframe width="800" height="500" src="http://www.bing.com" onfocus="document.getElementById('foo').focus();"/>
如果(我怀疑你这样做)你只想阻止iframe窃取初始焦点onload但希望用户以后能够将焦点转移到它上面,使用状态变量,如下所示:
<script type="text/javascript">
var initialFocus = false;
</script>
<iframe width="800" height="500" src="http://www.bing.com" onfocus="if (initialFocus==false) { document.getElementById('foo').focus(); initialFocus = true; }"/>
我希望这有帮助,如果您有任何问题我会在这里。