web-dev-qa-db-ja.com

window.open()にchromeで新しいタブを作成させる

Window.openを使用して、さまざまなコンテンツで新しいウィンドウを作成します。主に自動化されたプロセスからのレポートおよび保存されたHTML。

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

私の呼び出しのいくつかは、新しいタブを作成し(好ましい動作)、ポップアップを引き起こします。

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

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

IE9では、コードはポップアップではなく新しいタブを作成しますが、Chromeは問題のコンテンツを新しいタブに表示することを完全に拒否します。できれば質問に答えます。

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

洞察力に感謝します。

26
user1441141

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';
    });
});
40
Matt MacLean

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

<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>
3
buddy
window.open('page.html', '_newtab');

「_newtab」を指定します。これはIEおよびFFで動作し、Chromeで動作するはずです。ただし、ユーザーが新しいタブで開かないように設定されている場合は、あまり実行できません。

0
DanielCW

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

onmouseup="switchMenu(event);"

0
Felipe.Silva

私はこれを試してみましたが、クロムではうまくいきました。ユーザーのアクション(マウスクリックなど)で新しいタブを開く場合、問題なく動作します。ただし、コードが別のスクリプトブロックで実行される場合は、Chromeでポップアップを有効にする必要があります。これは、すべてのクリックベイトサイトを処理するように見えます。

let newTab = window.open('', '_blank');
if (this.viewerTab == null) {
  console.log("opening in new tab to work, pop-ups should be enabled.");
  return;
}

................

newTab.location.href = viewerUrl;
0
int-i