我想知道在同一个浏览器的另一个标签页中是否已经打开了相同的网址,如果是这样我需要提出警告。任何人都可以帮我解决此问题。需要使用javascript
答案 0 :(得分:0)
尝试一下。
var a = document.getElementById('opener'), w;
a.onclick = function() {
if (!w || w.closed) {
w = window.open("https://www.fb.com/");
} else {
console.log('window is already opened');
}
w.focus();
};
答案 1 :(得分:0)
这是一个使用纯JS和localStorage并使用当前打开的选项卡计数更新DOM的有效解决方案。它使用存储事件来使计数在所有打开的选项卡/窗口之间保持同步,而无需刷新页面。
请注意,此解决方案可在一个浏览器中检测给定域的打开的选项卡/窗口的数量,但不会在不同浏览器中保持计数。来自local storage上的Mozilla文档:
[localStorage事件]实际上是域中其他页面使用存储来同步所做的任何更改的一种方式。其他域上的页面无法访问相同的存储对象。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex, nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script>
(function() {
var stor = window.localStorage;
window.addEventListener("load", function(e) {
var openTabs = stor.getItem("openTabs");
if (openTabs) {
openTabs++;
stor.setItem("openTabs", openTabs)
} else {
stor.setItem("openTabs", 1)
}
render();
})
window.addEventListener("unload", function(e) {
e.preventDefault();
var openTabs = stor.getItem("openTabs");
if (openTabs) {
openTabs--;
stor.setItem("openTabs", openTabs)
}
e.returnValue = '';
});
window.addEventListener('storage', function(e) {
render();
})
function render() {
var openTabs = stor.getItem("openTabs");
var tabnum = document.getElementById("tabnum");
var dname = document.getElementById("dname");
tabnum.textContent = openTabs;
dname.textContent = window.location.host
}
}());
</script>
</head>
<body>
<div style="width:100%;height:100%;text-align:center;">
<h1 >You Have<h1>
<h1 id="tabnum">0</h1>
<h1>Tab(s) of <span id="dname"></span> Open</h1>
</div>
</body>
</html>