새창 열림과 새창 닫기 안되는 현상발견 - 브라우저 보안변경으로 10월5일부터
본문
아래와 같이 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
다음과 같은방법으로 해 볼 수 있을것 같습니다.
새 창이 이미 열려 있는 경우에는 새로 열지 않고, 이미 열린 창을 닫을 수 있도록 합니다.
<script>
var newWindow = null;
// 웹페이지 로드 시 새창 열기
window.onload = function() {
if (newWindow === null || newWindow.closed) {
newWindow = window.open("https://www.naver.com", "naver", "width=500, height=400");
}
};
// 버튼 클릭 시 새창 닫기
var closeButton = document.querySelector("#closeButton");
closeButton.addEventListener("click", function() {
if (newWindow !== null && !newWindow.closed) {
newWindow.close();
}
});
</script>
동적 창 이름 생성 방법
<script>
// 웹페이지 로드 시 새창 열기
window.onload = function() {
var uniqueWindowName = "naver_" + Date.now(); // 고유한 창 이름 생성
var newWindow = window.open("https://www.naver.com", uniqueWindowName, "width=500, height=400");
};
// 버튼 클릭 시 새창 닫기
var closeButton = document.querySelector("#closeButton");
closeButton.addEventListener("click", function() {
window.close();
});
</script>
각각의 창에 고유한 이름을 부여하여 중복으로 창이 열리는 것을 방지하게 할 수 있습니다.
!-->!-->