gpt4 book ai didi

javascript - 关闭正在运行 chrome 扩展程序的弹出窗口

转载 作者:行者123 更新时间:2023-11-28 08:47:34 24 4
gpt4 key购买 nike

摘要:我正在尝试关闭一个正在运行 chrome 扩展的弹出窗口。由于某种原因,当 chrome 窗口在其中运行扩展程序时,window.close 不起作用。

说明:

我的 GWT 应用程序需要与仅在 IE 7 中运行的旧系统进行交互,作为解决方案,我打开一个弹出窗口,网址为 'chrome-extension://hehijbfgiekmjfkfjpbkbammjbdenadd/iecontainer.html#url=www.legacysystem.com ',这会强制在新窗口中使用 IE 选项卡打开旧系统。要求始终只能为旧系统打开一个窗口,因此如果用户尝试打开另一个窗口,我需要关闭打开的窗口。

这是我打开新窗口的代码

 <head>
<script>
var WindowDialog = new function() {
this.openedWindows = {};
this.open = function(instanceName, url) {
var handle = window.open(url, instanceName, 'height=500,width=500');
this.openedWindows[instanceName] = handle;
return handle;
};
this.close = function(instanceName) {
if (this.openedWindows[instanceName])
this.openedWindows[instanceName].close();
};

};

function legacySystemWindow(name,url) {
WindowDialog.close(name);
WindowDialog.open(name, url);
}
</script>
</head>
<body>
<input value="Simple popup " type="button" id="1" onclick="legacySystemWindow('gmail','http://gmail.com')" />
<input value="IE Tab popup" type="button" id="2" onclick="legacySystemWindow('IETAB','chrome-extension://hehijbfgiekmjfkfjpbkbammjbdenadd/iecontainer.html#url=www.gmail.com')" />
</body>

当我在没有 IE 选项卡的情况下尝试此代码时出现问题,一切正常,但是当我使用 IE 选项卡尝试此代码时,代码无法关闭 chrome 窗口。

据我所知chrome.* api 不适用,因为我没有使用扩展名运行此代码

非常感谢任何想法或解决方案。

最佳答案

这不是您可能期望(或希望)的解决方案,但它可能适合您。

IE Tab 使用插件(即 blackfishietab.dll),因此我认为您无能为力(甚至更深入地研究它以找到确切的问题)。但是(即使问题的确切原因(对我而言)未知)我提出了 3 个解决方案:

解决方案1

如果 GWT 应用程序仅从您的 PC(或您具有管理访问权限的特定 PC)运行,您可以修改 IE Tab 扩展源代码,以便能够关闭打开的窗口。
免责声明:我不确定您是否有这样做的合法权利,因此您可能需要首先获得开发商的明确许可。

解决方案2

只需很少的额外开销(并且考虑到您可以强加用户的开销),您可以实现自己的 chrome 扩展并与其交互(而不是直接使用 IE Tab 扩展)。 IE。您可以要求您的扩展使用 IE Tab 打开旧系统。然后,您的扩展程序可以跟踪打开的窗口并在需要时将其关闭。
(扩展程序将能够关闭窗口,因为它将可以访问强大的 chrome.* API。)

解决方案3

此解决方案不提供以编程方式关闭 IE Tab 窗口的方法,但它仍然确保从 GWT 应用程序打开的 IE Tab 窗口不超过 1 个。
根据有关 window.open(srtUrl, strWindowName) 的文档的第二个参数:

If a window with the name strWindowName already exists, then strUrl is loaded into the existing window.

因此,您不必担心先关闭窗口,只要您始终对 IE Tab 窗口使用相同的名称即可:

function legacySystemWindow(name, url) {
//WindowDialog.close(name); // <-- You can get rid of this line
WindowDialog.open(name, url);
}

(您也不需要跟踪打开的选项卡,因为您不需要以编程方式关闭它们。)

关于javascript - 关闭正在运行 chrome 扩展程序的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19563258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com