26

window.openを使用して、新しいウィンドウにさまざまなコンテンツを入力します。ほとんどの場合、自動化されたプロセスからのレポートと保存されたHTML。

window.open()に関してChromeで非常に一貫性のない動作に気づきました。

私の呼び出しの中には、新しいタブ(推奨される動作)を作成するものと、ポップアップを引き起こすものがあります。

var w = window.open('','_new');
w.document.write(page_content);

page_contentは、AJAX呼び出しからの通常のHTMLです。レポートのヘッダーには、タイトル、ファビコン、スタイルシートなどの情報が含まれています。

IE9では、コードによってポップアップではなく新しいタブが表示されますが、Chromeは問題のコンテンツを新しいタブに表示することを断固として拒否します。コンテンツは機密性の高いビジネスデータであるため、ここに投稿することはできません。できれば質問にお答えします。

これはユーザーに任された行動だと言う人もいるでしょうが、これは社内のビジネスプラットフォームです。ポップアップの管理方法についてすべてのユーザーをトレーニングする時間はありません。ポップアップを新しいタブに配置する必要があります。Chromeでポップアップをドッキングできないため、ポップアップよりも新しいウィンドウの方が適しています。言うまでもなく、ポップアップブロックコードはどれもそれに影響を与えません。

洞察に感謝します。

4

5 に答える 5

40

window.openは、ウィンドウではなく新しいタブでページを開くために、ユーザーアクション(例:onclick)によってトリガーされるコールバック内で呼び出す必要があります。

例:

$("a.runReport").click(function(evt) {
    // open a popup within the click handler
    // this should open in a new tab
    var popup = window.open("about:blank", "myPopup");

    //do some ajax calls
    $.get("/run/the/report", function(result) {
        // now write to the popup
        popup.document.write(result.page_content);

        // or change the location
        // popup.location = 'someOtherPage.html';
    });
});
于 2013-01-31T17:48:46.580 に答える
3

これを試すことができます:

<a href="javascript:openWindow();">open a new tab please</a>

<script>
    function openWindow(){
        var w = window.open("about:blank");
        w.document.write("heheh new page opened");
    }
</script>
于 2013-03-26T03:27:57.367 に答える
0

Chrome を強制的に新しいタブで開くには、onmouseup イベントを使用します。

onmouseup="switchMenu(event);"

于 2014-10-10T17:50:55.847 に答える
-1
window.open('page.html', '_newtab');

'_newtab'を指定します。これはIEとFFで機能し、Chromeでも機能するはずです。ただし、ユーザーが新しいタブで開かないように構成されている場合は、できることはあまりありません。

于 2012-08-17T04:39:22.013 に答える