我将打开一个包含iframe的对话框,然后在打开对话框后将焦点设置在iframe内。专注于Firefox中的iframe
目前,我尝试加载内容时获取焦点上的iframe:
<iframe src="../credits.html" onload="this.contentWindow.focus()"></iframe>
它工作正常的Firefox除外所有的浏览器,我不明白为什么。
有人能告诉我为什么吗? 感谢
我将打开一个包含iframe的对话框,然后在打开对话框后将焦点设置在iframe内。专注于Firefox中的iframe
目前,我尝试加载内容时获取焦点上的iframe:
<iframe src="../credits.html" onload="this.contentWindow.focus()"></iframe>
它工作正常的Firefox除外所有的浏览器,我不明白为什么。
有人能告诉我为什么吗? 感谢
火狐似乎没有contentWindow财产,你应该使用contentDocument
更新:
<html>
<head>
<title></title>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(function() {
$("#xframe").bind("load", function(){
$(this).contents().find("#xa").focus();
});
});
</script>
</head>
<body>
<iframe id="xframe" src="./y.html"></iframe>
</body>
</html>
在:
我想出了一个更好的解决方案小型辩论之后在这个例子中,我假设在y.html中有一个输入字段,它有一个“xa”id。它同时适用于Chrome和Firefox。
老答案
更妙的是,你应该使用jQuery的,是这样的:
<html>
<head>
<title></title>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#xframe").focus();
});
</script>
</head>
<body>
<iframe id="xframe" src="./y.html"></iframe>
</body>
</html>
你当然可以做一些额外的检查,看是否iframe是准备好了。
更多信息可以在这里http://www.w3schools.com/jsref/prop_frame_contentwindow.asp
我想我的问题更多的是如何在Firefox框架中进行自我关注。例如你怎么让这个jsfiddle在Firefox中工作? http://jsfiddle.net/4b32fgd8/ – user2867288
这不是在jsfiddle上工作,因为别的东西在偷窃焦点。如果你在全屏运行它,它会工作:http://jsfiddle.net/4b32fgd8/show/ – rfsbsb
那么为什么不工作没有全屏? http://jsfiddle.net/4b32fgd8/1/ – user2867288
发现尝试做到这一点使用jQuery
// focus an input in iframe
$('#xframe').contents().find('input').get(0).focus()
// or simply iframe window
var iframe= $('#xframe')[0];
var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;
iframewindow.focus()
在iframe加载事件上使用此代码 –
我想知道这一点。现在是2015年,Firefox似乎不允许iframe甚至专注于自己或其中的任何内容。这个非常简单的小提琴在Firefox中不起作用:http://jsfiddle.net/4b32fgd8/ – user2867288
可能的重复https://stackoverflow.com/questions/1508348/set-focus-to-iframe-body-content-in- firefox?rq = 1 –
@ user2867288您的小提琴无法工作的原因可能是因为JSFiddle将焦点设置到了他们的代码编辑器中,或者以其他方式窃取焦点,以致您的框架无法工作。我无法在JSFiddle中重现此问题,即使此代码有效:'