Use*_*019 14 javascript external browser-tab external-links
如何知道或检查两个浏览器选项卡是否已打开,如果这些选项卡是打开的,用户将收到一个警告框或消息框,说"网址已经打开",类似于纯/原生JavaScript?此浏览器选项卡包含一个外部网站,我没有任何权限来操纵或更改它.谢谢
示例网址
yahoo.com and google.com
Run Code Online (Sandbox Code Playgroud)
如果已经打开yahoo.com和google.com的标签,我想提醒用户
我想使用tabCreate打开这样的URL:
tabCreate("http://maps.google.com/", "tabMapsPermanentAddress");
mean to open a new tab, it is use in creating chrome extension
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容
<!-- HTML -->
<a id="opener">Open window</a>
// JavaScript
var a = document.getElementById('opener'), w;
a.onclick = function() {
if (!w || w.closed) {
w = window.open("https://www.google.com","_blank","menubar = 0, scrollbars = 0");
} else {
console.log('window is already opened');
}
w.focus();
};
Run Code Online (Sandbox Code Playgroud)
工作jsBin | 有关window.open方法的更多信息
如果要控制多个窗口,请使用下面的代码段
<!-- HTML -->
<a href="https://www.google.com" class="opener">Open google.com</a> |
<a href="http://www.yahoo.com" class="opener">Open yahoo.com</a>
//JavaScript
window.onload = function(){
var a = document.querySelectorAll('.opener'), w = [], url, random, i;
for(i = 0; i < a.length; i++){
(function(i){
a[i].onclick = function(e) {
if (!w[i] || w[i].closed) {
url = this.href;
random = Math.floor((Math.random() * 100) + 1);
w[i] = window.open(url, "_blank", random, "menubar = 0, scrollbars = 0");
} else {
console.log('window ' + url + ' is already opened');
}
e.preventDefault();
w[i].focus();
};
})(i);
}
};
Run Code Online (Sandbox Code Playgroud)
如果您不希望它们在单独的窗口中加载,只需排除此行
random = Math.floor((Math.random()*100)+1);
Run Code Online (Sandbox Code Playgroud)
并删除random下一行的引用
w[i] = window.open(url, "_blank", random, "menubar=0,scrollbars=0");
Run Code Online (Sandbox Code Playgroud)
附注:正如您在上面所看到的,我们创建了两个带有第三方内容的窗口; 你应该知道,没有办法从它们获得任何引用(到父/开启窗口).
一个基本的想法是将选项卡计数存储在cookie中,或者localStorage在页面加载时递增它,并在页面卸载时递减它:
if (+localStorage.tabCount > 0)
alert('Already open!');
else
localStorage.tabCount = 0;
localStorage.tabCount = +localStorage.tabCount + 1;
window.onunload = function () {
localStorage.tabCount = +localStorage.tabCount - 1;
};
Run Code Online (Sandbox Code Playgroud)
尝试在多个标签中打开这个小提琴.
请注意,这种技术非常脆弱.例如,如果由于某种原因浏览器崩溃,卸载处理程序将无法运行,并且它将不同步.
| 归档时间: |
|
| 查看次数: |
24161 次 |
| 最近记录: |