我將打開一個包含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中重現此問題,即使此代碼有效:'