2011-08-18 6 views
1

내가 코드 블로우 작업을하기 위해 사투를 벌인거야 ... 그런같이 window.blur setInterval()이()

, 내가 궁금하네요 왜 같이 window.blur() 및 window.blur (에서 작동하지 않습니다) 메소드가 작동하지 않습니다/입력 버튼에서만 작동합니다. setInterval()에서 호출 할 때 작동하지 않습니다.

예를 들어, 아래의 경우 HTML로 단추를 누르면 처음으로 창을 만든 다음 두 번째로 단추를 누르면 창의 초점을 맞 춥니 다.

그러나 창 포커스를 설정하기 위해 setInterval()을 설정했지만 작동하지 않습니다. 콘솔에서 로그를 볼 수 있으므로 setInterval 함수는 올바르게 작동하지만 win.focus()는 무시됩니다.

<head> 
... 
    <script> 
    var win; 
    function makePopup(){ 
     if (!win || win.closed) { 
      win = window.open("","","width=200, height=200"); 
      win.blur(); 
     }else{ 
      win.focus(); 
      console.log("opened"); 
     } 
    } 
    setInterval(function(){makePopup();},4000); 
    </script> 
</head> 

<body> 
    <input type="button" onclick="makePopup()"/> 
</body> 

그래서 문제는 다음과 같습니다

  1. window.blur()가 전혀 작동하지 않습니다.
  2. window.focus()는 HTML 버튼에서 makePopup()을 호출 할 때만 작동하며 setInterval()에서는 작동하지 않습니다.

Mac OSX와 Chrome 및 Safari에서 테스트 중입니다.

의견을 제시해 주시면 감사하겠습니다.

미리 감사드립니다.

+1

나는 보안상의 문제가 있을지 모르지만, 당신이 알지 못하는 경우를 대비하여, setInterval (makePopup, 4000);을 호출 할 수 있습니다. 시각. – pimvdb

+0

fyi, 그 간격을 설정할 때, 당신은'makePopup'을 호출하는 함수를 전달할 필요가 없습니다. 다음과 같이 식별자'makePopup'를 직접 전달할 수 있습니다 :'setInterval (makePopup, 4000)' – Shad

+0

조언을 해주셔서 감사합니다 ! 그래,하지만이 방법을 알고 있지만 이것을 작성하는 데 사용 : – leccmo

답변

1

브라우저는 누군가가 링크를 클릭하여 팝업을 열었을 때와 스크립트에 의해 트리거되었을 때의 차이를 알고 있습니다. 악의적 인 활동을 방지하기 위해 많은 브라우저가 스크립트 팝업을 방지합니다.

호스팅 된 페이지와 동일한 도메인에있는 URL을 지정하면 정상적으로 작동합니다.

+0

답변을 주셔서 감사합니다 Diodeus!
이제 "localhost /"의
win.open ("test.html", "", "width = 200, height = 200")
을 호출합니다. 그것은 스크립트에서 창을 열지 만 일단 창이 열리면 다른 창에 초점을 맞추고 창을 다시 초점을 맞추지 않습니다.
창이 열리면 특정 기간에 팝업 창이 활성화되도록하고 싶습니다. – leccmo

+0

작동하는 경우 투표하고 답변을 수락하십시오. –

+0

자체에 포커스를 설정하는 팝업에 스크립트를 추가하십시오. –