我正在尝试做两件事1.我需要在后台打开一个新选项卡而不给它焦点,2.我需要能够使用JavaScript写入该页面。 (我只关心它的工作在Chrome)如何使用javascript写入在后台打开的新选项卡
现在,如果我用这个代码....
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工作,它是我公司的Web应用程序,每个人都使用Chrome,所以我不在乎它是否适用于其他浏览器。
那么,既然你定义了'var handle',我会假设这将是第二个窗口的句柄?也许你可以打开新窗口,将所有数据写入它,然后隐藏它? –
公平警告:您已经说过,使用'dispatchEvent'的第二个codeblock适合您,在后台打开新的选项卡。它不适合我在Linux上使用Chrome 23.0.1271.95,它会在前台打开它:http://jsbin.com/eholeb/1 –
我使用Chrome 24.0.1312.35 beta-m(windows 7 64位)它工作的很好,我办公室的其他人使用Chrome 22.0.1229.79米,它对他们来说也很完美,也许是因为你使用的是Linux? :-P – Jared