var yourWindow = window.open();
yourWindow.opener = null;
yourWindow.location = "http://someurl.here";
yourWindow.target = "_blank";
上面的代码按照预期在没有弹出窗口阻止程序的情况下在ajax成功中打开一个新选项卡,但它会占用父选项卡内存。
我能做些什么来解决这个案子吗?请帮我解决这个问题,在此先感谢。
答案 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()
}