强制window.open()在chrome中创建新选项卡

use*_*141 26 javascript tabs google-chrome

我使用window.open来填充具有不同内容的新窗口.主要是从自动化流程报告和存储HTML.

我注意到Chrome对window.open()的一些非常不一致的行为.

我的一些调用将创建一个新选项卡(首选行为),一些会导致弹出窗口.

var w = window.open('','_new');
w.document.write(page_content);
Run Code Online (Sandbox Code Playgroud)

page_content只是来自AJAX调用的常规HTML.报告包含标题中的一些信息,如title,favicon和一些样式表.

在IE9中,代码确实会生成一个新标签而不是弹出窗口,而Chrome则完全拒绝在新标签中显示相关内容.由于内容是敏感的商业数据,我无法在此发布.如果可以,我会回答问题.

我知道有些人会说这是留给用户的行为,但这是一个内部业务平台.我们没有时间训练所有用户如何管理弹出窗口,我们只需要它在一个新的选项卡中.哎呀,即使是一个新窗口也会比弹出窗口更好,因为你无法在Chrome中停靠弹出窗口.更不用说弹出窗口阻止代码都不会影响它.

欣赏任何洞察力.

Mat*_*ean 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';
    });
});
Run Code Online (Sandbox Code Playgroud)


小智 -1

window.open('page.html', '_newtab');
Run Code Online (Sandbox Code Playgroud)

指定“_newtab”。这适用于 IE 和 FF,并且应该适用于 Chrome。但是,如果用户将某些内容配置为不在新选项卡中打开,那么您无能为力。

  • _newtab 在 Chrome 中不执行任何操作。 (10认同)
  • 另外,我检查了 Chrome 中的设置,除非我是盲人,否则我找不到在哪里设置任何控制链接打开方式的内容。 (3认同)