1

私は2つのことをしようとしています。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);

これは美しく機能します(バックグラウンドで新しいタブが開きます)が、新しいウィンドウのハンドルを取得できないため、開いた新しいウィンドウに書き込むことができません。

誰かが、最初の方法を使用してフォーカスを与えずにそのウィンドウを開く方法、または2番目のウィンドウの使用方法を教えてもらえますが、どういうわけかそのウィンドウのハンドルを取得して書き込みを行うことができます。

前に言ったように、このコードはChromeで機能するためだけに必要です。これは私の会社のウェブアプリであり、ここの全員がChromeを使用しているので、他のブラウザーで機能するかどうかは気にしません。

4

1 に答える 1

0

上記の回答に加えて、新しいウィンドウがフォーカスを失うように handle.blur() を実行することもできます。

于 2012-12-07T18:05:46.387 に答える