我在一个标签中有一个JavaScript应用程序,如果我点击我页面上的某个链接,它就会打开。如果我再次单击该链接,我需要检查该选项卡是否已全部打开 - 如果是,则切换到该选项卡并执行某些操作,否则打开新选项卡。
不幸的是使用
var myApp = window.open("http://www.mypage.com/myapp.html", "My App");
if(myApp){
不会帮助我,因为我不能依赖URL,因为我在使用的每个环境中的URL都会有所不同。
如果我不能依赖URL,我该如何实现?我唯一能检查的是标签的名称 - 它总是一样的。我该如何访问浏览器的标签数组?
谢谢!
答案 0 :(得分:1)
据我了解,您无法访问浏览器的标签数组(当然不能通过JavaScript)。这将是客户端的安全漏洞。您应该将每个浏览器选项卡视为其自己的浏览器实例 - 不知道任何其他选项卡。
答案 1 :(得分:1)
如果已使用Cookie /本地存储打开了标签,则可以跟踪该标签。
将值"isOpened=true"
保存在Cookie或localStorage中,并确保在该选项卡处于关闭状态或用户使用"onunload"
事件导航到其他页面时从中删除值。
但是您要打开的页面应该在同一个域上以访问/设置Cookie。
如果用户只是通过复制链接打开页面,我们仍然无法做任何事情。
答案 2 :(得分:0)
当你使用javascript打开新窗口时你可以这样做你可以在那个元素上添加一个虚拟属性,说“data-isOpend ='no'” 当用户点击该元素时,您可以将该属性更改为“data-isOpened ='yes'”,并且在打开新窗口之前在javascript函数中,您必须检查data-isOpend =='no'然后打开在新窗口中链接其他什么都不做
答案 3 :(得分:0)
(如果有任何其他开发人员来这里寻找解决方案,就像我一样,只是留下一个不同的ans :),
我们可以在创建选项卡时为其指定名称 例如。
function view_preview()
{
var abc;
if(abc!=null){
abc.close();
}
var url=some_link
abc=window.open(url,'tab_name');
}
在这里,我们打开一个新选项卡,如果该选项卡已经打开,我们正在“刷新”它。