window.close()不起作用(最初通过JS / JQuery打开)

时间:2016-07-14 16:34:57

标签: javascript jquery redirect instagram-api window.open

我使用的是Instagram API,注销的唯一方法是通过链接https://instagram.com/accounts/logout/将用户重定向到Instagram页面(如果有人知道其他方法请告诉我)。但是,我想将用户重定向到我自己的页面。 (我之前在this帖子中尝试过这样做的方法。img / iframe会追加并将用户重定向到我的页面,但用户仍然登录。) 这是我目前使用的代码:

$('.logout').on("click", function () {
     window.open('https://instagram.com/accounts/logout/'); 
     window.close();
     window.location.replace("logout-page.html");
}

Instagram页面在新选项卡中成功打开并签署用户,而我的页面重定向到注销页面,但我希望Instagram注销页面在打开后自行关闭。其他人说window.close()只有在使用window.open()通过脚本打开时才有效,我正在做,但仍然无效。我也尝试了window.open("", self).close()以及其他变体,这些也不适用于我。

3 个答案:

答案 0 :(得分:1)

要关闭打开的窗口,您必须将其定义为对象。

关闭setTimeout延迟将允许它完全打开网址 如果需要,调整延迟......但是1秒应该可以工作。

myWindow = window.open('https://instagram.com/accounts/logout/');

setTimeout(function(){
    myWindow.close();
},1000);

修改
似乎不可能“隐藏”弹出窗口...
我在this answer找到了一种方法,但它需要在弹出页面中添加一个脚本...

使用上面的脚本,弹出窗口将作为新选项卡打开...并且仅在1秒内保持打开状态。这是我能说的最好的......直到我发现this other solution你可以试试。

答案 1 :(得分:1)

window.open返回已打开的新窗口的对象。要修改此新窗口,您必须使用返回的对象,如:

new_window = window.open("url");
new_window.close();

无论如何,这不是一个好的解决方案,因为您不知道新打开的窗口是否已成功加载页面或已完成加载页面。

我建议您只需在新窗口中打开注销页面并重定向当前页面,如下所示:

my_window = window.open("url", "Window-Name", "height=200,width=200");
document.location = "your_url"; //redirects the current page...`

答案 2 :(得分:0)

只需在某处附加DOM的隐藏iframe中打开网址即可。下面是jQuery代码:

$('#content').append('<div style="display:none"><iframe src="https://instagram.com/accounts/logout/" width="0" height="0"></iframe></div>');

这是我在https://www.picosdash.com中实施注销并允许在应用中登录多个帐户的方式,效果很好。