1

我正在尝试做两件事,1. 我需要在后台打开一个新选项卡而不给它焦点,2. 我需要能够使用 javascript 写入该页面。(我只关心它在 Chrome 上的工作)

现在,如果我使用此代码....

var handle = window.open("text/html", '_blank');
handle.document.write(reportPath);
handle.document.title = "Export Report";

我可以打开一个新的并写信给它,但是,那个窗口被推到你的脸上,我不想发生这种情况,因为它严重地中断了我的用户的工作流程(我想把注意力集中在前一个窗口上)。

但是,我可以使用此代码....

var a = document.createElement("a");
a.href = "about:blank";
a.target='_blank'
var evt = document.createEvent("MouseEvents");
//the tenth parameter of initMouseEvent sets ctrl key
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
a.dispatchEvent(evt);

效果很好(它在后台打开新选项卡),但是,我无法写入打开的新窗口,因为我无法获得新窗口的句柄。

有人可以告诉我如何使用第一种方法打开该窗口而不给它焦点,或者告诉我如何使用第二个窗口,但以某种方式获取该窗口的句柄以便我可以写入它。

正如我之前所说,我只需要此代码即可为 Chrome 工作,它是我公司的网络应用程序,这里的每个人都使用 Chrome,所以我不在乎它是否适用于其他浏览器。

4

1 回答 1

0

除了上面的答案,您还可以为新窗口做一个 handle.blur() 失去焦点。

于 2012-12-07T18:05:46.387 回答