2012-12-07 18 views
1

我正在尝试做两件事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,所以我不在乎它是否适用于其他浏览器。

+0

那么,既然你定义了'var handle',我会假设这将是第二个窗口的句柄?也许你可以打开新窗口,将所有数据写入它,然后隐藏它? –

+1

公平警告:您已经说过,使用'dispatchEvent'的第二个codeblock适合您,在后台打开新的选项卡。它不适合我在Linux上使用Chrome 23.0.1271.95,它会在前台打开它:http://jsbin.com/eholeb/1 –

+0

我使用Chrome 24.0.1312.35 beta-m(windows 7 64位)它工作的很好,我办公室的其他人使用Chrome 22.0.1229.79米,它对他们来说也很完美,也许是因为你使用的是Linux? :-P – Jared

回答

0

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

+0

是的,我试过了,它在Chrome中不起作用。 :-( – Jared

相关问题