带有'_blank'的Window.open使用父标签内存

时间:2018-04-07 08:58:03

标签: javascript jquery browser window.open window.opener

var yourWindow = window.open();
yourWindow.opener = null;
yourWindow.location = "http://someurl.here";
yourWindow.target = "_blank";

上面的代码按照预期在没有弹出窗口阻止程序的情况下在ajax成功中打开一个新选项卡,但它会占用父选项卡内存。

enter image description here

enter image description here

我能做些什么来解决这个案子吗?请帮我解决这个问题,在此先感谢。

2 个答案:

答案 0 :(得分:-1)

我认为你可能会以错误的方式解决这个问题 - 因为你试图使用javascript打开一个标签/窗口,但仍然使用html属性。

请考虑使用以下内容:

function openThis(u, t){
// where:...
// u= someURL,  t=TabId (or "" for new tab/win everytime)
  var tgtw = window.open(u,t);  //open the tab/window
      tgtw.focus();             //ff has issues, works in chrome
}

不确定为什么要尝试清空opener ref,因为它不适用于打开的javascript方法(它只是将窗口对象返回到调用窗口 - 因此增加了该窗口/选项卡使用的内存)。

顺便说一句,如果你如此倾向,你可以声明“tgtw”'超出范围的“开放”这个'函数,这样它可以被其他函数访问,那么你也可以使用一个按钮或一些这样的元素来关闭它......

function closeTab(){
  try{tgtw.close();}catch(err){}
/* the try/catch is probably unnecessary but yer never know,
   given that javascript is becoming less and less dev friendly
   for window/tab calls*/
}

HTH,

-G。

答案 1 :(得分:-1)

我也遇到了这个问题,我通过创建链接,设置属性(最重要的是'res noopener')来解决此问题,然后触发点击事件

function openNonpener (url) {
  let link = document.createElement('a')
  link.setAttribute('href', url)
  link.setAttribute('target', '_blank')
  link.setAttribute('rel', 'noopener')
  link.click()
}