2012-12-07 27 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

相關問題