2013-10-12 2 views
8

oninit 함수의 텍스트 영역에 포커스를 설정하는 간단한 테스트 페이지가 있습니다. 그러나 페이지가 자식으로 호출 된 경우 정확한 코드가이 작업을 수행하지 못합니다.자바 스크립트 설정에서 포커스가있는 텍스트 영역()은 하위 창으로 호출 될 경우 작동하지 않습니다.

경고 상자를 넣으면 oninit 함수가 호출되고 있지만 텍스트 상자에 포커스를 넣지 못하는 것입니다. 다시로드를 누르면 초점이 올바르게 맞춰집니다.

그래서 내 코드가 메인 페이지에서 호출 될 때 완벽하게 작동하고 reload가 호출되면 자식에서도 작동하므로 왜 처음에는 작동하지 않습니까?

<html> 
<body onload="init()"> 
<script type="text/javascript"> 
function init() 
{ 
    document.getElementById("message").focus(); 
} 

</script> 
<textarea id="message" rows=10 cols=40></textarea> 
</body> 
</html> 

페이지가 ("test2.html")를 window.open에 의해로드 된 경우, 단지에만 작동하지 않습니다 수 있습니다 여기에 영리 아무것도;

+1

"페이지가 자식으로 호출되는 경우"는 무엇을 의미합니까? – jfriend00

+0

@ jfriend00 그는 'window.open (' ')'을 의미한다고 생각합니다. – Dvir

답변

4

어떤 브라우저를 사용하십니까? 나는 파이어 폭스, 크롬 & IE를 체크인한다. 코드가 완벽하게 실행되고 텍스트 영역에 초점을 맞 춥니 다.

두 개의 파일 test1.html과 test2.html을 동일한 디렉토리에 만듭니다. test1.html에서 난 ..

<html> 
<body> 
<script type="text/javascript"> 
function init() 
{ 
    window.open('test2.html'); 
} 

</script> 
<button onclick="init()">test</button> 
</body> 
</html> 

그리고 test2.html에서

..

<html> 
<body onload="init()"> 
<script type="text/javascript"> 
function init() 
{ 
    document.getElementById("message").focus(); 
} 

</script> 
<textarea id="message" rows=10 cols=40></textarea> 
</body> 
</html> 

보다, 내가 follwing을 코드 test1.html을 실행하고 버튼을 test2.html을 클릭하고 삽입 텍스트 영역에 중점을두고 나타납니다.

+0

Chromebook을 Chromebook에 사용하고 있습니다. window.open ('test2.html', "", 'width = 530px, height = 230px')에 대한 호출을 변경하여 테스트 코드로 오류를 재현했습니다. –

+0

변경 사항에 따라 window.open도 변경됩니다. 그러나 코드는 완벽하게 작동하고 텍스트 영역에 초점을 맞 춥니 다. –

+0

마지막으로 크롬 북에서 포트 80을 열고 Mac을 연결하는 방법을 알아 냈습니다. 테스트 페이지는 Mac의 Safari, Chrome 및 Firefox에서 예상대로 작동합니다. 그래서 Arm 버전의 Chrome 버전과 같은 버그가있는 것 같습니다. 이것이 내가 정상적으로 작동해야한다고 생각했던 것처럼 나를 혼란스럽게 만들었습니다. –

0

이벤트와 관계없이 setTimeout을 사용할 수도 있습니다.

setTimeout(function() { 
    $('#elementId').focus(); 
}, 0); 
+0

문제가 지정된 자바 스크립트를 호출 할 때 jquery를 활용합니다. 머리카락을 쪼개는 것처럼 보이지만 jquery를 사용할 수없는 경우가 있습니다. – Bueno

+1

나도 알아,하지만 대체 답안을 쓰는 것이 항상 낫다. 그래서 지역 사회는 질문을 복제하고 같은 대답을 다시 게시하는 것보다는 그로부터 이익을 얻을 수있다. 지역 가이드 라인에 대해 더 잘 배우는 것이 좋을 것 같습니다. –

+0

Ishan Liyanage가 @Bueno입니다. 나는 그의 대답에 막 도움을 받았다. –