Firefox wydaje się nie mieć własności contentWindow, należy użyć contentDocument
Aktualizacja:
Po krótkiej debacie wymyśliłem lepszego rozwiązania:
<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>
W w tym przykładzie zakładam, że w pliku y.html znajduje się pole wejściowe z identyfikatorem "xa". Działa zarówno w przeglądarce Chrome, jak i Firefox.
Old odpowiedź
Nawet lepiej należy użyć jQuery coś takiego:
<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>
Oczywiście można zrobić jakieś dodatkowe sprawdzenie, czy iframe jest gotowy.
Więcej informacji można znaleźć tutaj http://www.w3schools.com/jsref/prop_frame_contentwindow.asp
chciałbym wiedzieć to zbyt. Jest rok 2015 i Firefox nie zezwala na to, by element iframe skupiał się na sobie lub na czymkolwiek. To niezwykle proste skrzypce nie działa w Firefoksie: http://jsfiddle.net/4b32fgd8/ – user2867288
Możliwy duplikat https://stackoverflow.com/questions/1508348/set-focus-to-iframe-body-content-in- firefox? rq = 1 –
@ user2867288 Powodem, dla którego twoje skrzypce nie działa, jest prawdopodobnie to, że JSFiddle ustawia fokus w swoich edytorach kodu lub w inny sposób kradnie fokus, aby twoja ramka nie mogła. Nie mogę odtworzyć tego problemu na stronie JSFiddle, nawet ten kod działa: '' –