웹 사이트에서 여러 개의 새 탭/창을 열었습니다. 웹 사이트의 기본 페이지에는 '모두 닫기'버튼이있어 웹 사이트에서 열려있는 모든 창을 닫아야합니다. 처음에는 잘 작동하는 것 같습니다. 그러나 주 페이지의 이름은 '모두 닫기'링크를 누를 때 열었던 마지막 페이지로 덮어 씁니다. 그 결과, 마지막으로 열린 페이지가 다시 호출 될 때마다 새 탭에서 열리지는 않지만 주 페이지 탭 (분명히 원하는 것은 아닙니다)에 열립니다.자바 스크립트가 다른 창에서 창을 닫으면 창 이름이 겹쳐서 쓰여집니다.
popupmanager.js :
이 MWE를 참조
function PopupManager() {
this.name = "_popupmanager_";
this.windows = {};
};
PopupManager.prototype.open = function(url, name) {
this.windows[name] = window.open(url, name);
this.windows[name].focus();
};
PopupManager.prototype.closeAll = function() {
for (name in this.windows) {
this.closeWindow(name);
}
};
PopupManager.prototype.closeWindow = function(name) {
if (this.windows[name]) {
this.windows[name].close();
delete this.windows[name];
}
};
메인 페이지의 존재의 index.html을 : 두 번째보다 첫 번째 링크를 클릭 이제
<!doctype html>
<html>
<head>
<script src="./popupmanager.js"></script>
<script>
var popupManager = new PopupManager();
</script>
</head>
<body>
<ul>
<li><a href="javascript:popupManager.open('http://www.facebook.be', 'facebook')">facebook</a></li>
<li><a href="javascript:popupManager.open('http://www.google.be', 'google')">google</a></li>
<li><a href="javascript:popupManager.closeAll()">close all/a></li>
</ul>
</body>
</html>
, , 두 페이지가 모두 열립니다. '모두 닫기'를 누르면 모든 것이 잘 작동하는 것 같습니다. 그러나이 시점에서 기본 페이지 탭의 이름은 'google'('closeAll'함수 실행 결과)입니다. 두 번째 링크를 다시 클릭하면 새 탭이 아닌 기본 페이지에서 열립니다. 파이어 폭스 21.0, 구글 크롬 24.0.1312.60m, IE9에서이 동작을 보았는데, 자바 스크립트의 의도 된 동작이라고 생각된다.
메인 페이지의 이름을 덮어 쓰는 이유 및/또는 스크립트가 기본 페이지 탭의 이름을 덮어 쓰지 않는 방법을 알 수 없습니다. 누군가?