테스트 사이트 - 개발 중인 베타 버전입니다

새창 열림과 새창 닫기 안되는 현상발견 - 브라우저 보안변경으로 10월5일부터 채택완료

노영진 2년 전 조회 2,213

아래와 같이 html을 만들어서 브라우저를 로드하면 새창을 열리고 버튼을 누르면 새창으로 열린 브라우저를 닫는 코드인데 브라우저 업데이트 이후에 창이 안닫아지네요. 

바로 전에 

예전에는 잘 되던것이

창이름이 고정인데도 크롬이나 엣지에서

모두 창이름 고정이 안되고 계속해서 새창이 열리는데

혹시 크롬에서 설정에서 같은 창 이름이면 새창이 더 안열리게 하는 방법 아시는 분

답변 좀 주세요.

window.open('주소','창이름','옵션') 해서 창이름이 같은데 새창이 자꾸 열리네요.

갑자기 모든 브라우저에서 그러네요.

 

질문에도 답이 없어서 창을 닫는 방법으로 코딩해도 창을 자바스크립트로 못 닫는중입니다.

 

 

<script>
// 웹페이지 로드 시 새창 열기
window.onload = function() {
  var newWindow = window.open("https://www.naver.com", "naver", "width=500, height=400");
};

// 버튼 클릭 시 새창 닫기
var closeButton = document.querySelector("#closeButton");
closeButton.addEventListener("click", function() {
  newWindow.close();
});
</script>

<button id="closeButton">닫기</button>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

다음과 같은방법으로 해 볼 수 있을것 같습니다.

 

새 창이 이미 열려 있는 경우에는 새로 열지 않고, 이미 열린 창을 닫을 수 있도록 합니다.

</p>

<p><script>

var newWindow = null;</p>

<p>// 웹페이지 로드 시 새창 열기

window.onload = function() {

  if (newWindow === null || newWindow.closed) {

    newWindow = window.open("<a href="https://www.naver.com"," target="_blank" rel="noopener noreferrer">https://www.naver.com",</a> "naver", "width=500, height=400");

  }

};</p>

<p>// 버튼 클릭 시 새창 닫기

var closeButton = document.querySelector("#closeButton");

closeButton.addEventListener("click", function() {

  if (newWindow !== null && !newWindow.closed) {

    newWindow.close();

  }

});

</script>

 

동적 창 이름 생성 방법

</p>

<p><script>

// 웹페이지 로드 시 새창 열기

window.onload = function() {

  var uniqueWindowName = "naver_" + Date.now(); // 고유한 창 이름 생성

  var newWindow = window.open("<a href="https://www.naver.com"," target="_blank" rel="noopener noreferrer">https://www.naver.com",</a> uniqueWindowName, "width=500, height=400");

};</p>

<p>// 버튼 클릭 시 새창 닫기

var closeButton = document.querySelector("#closeButton");

closeButton.addEventListener("click", function() {

  window.close();

});

</script>

각각의 창에 고유한 이름을 부여하여 중복으로 창이 열리는 것을 방지하게 할 수 있습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인