javascript - 使用 jQuery 打开多个选项卡

标签 javascript google-chrome tabs jquery

好吧,我觉得我已经在这里做了尽职调查...... JSFIddle - http://jsfiddle.net/taytayevanson/8BpHw/5/

我正在尝试创建一个将弹出多个选项卡的页面。我了解使用此代码...

<a href="google.com" target="_blank">New Tab</a>

将弹出 1 个新标签。但是,如 this 中所述stackoverflow q/a,它需要是一个“用户发起的事件”,Chrome 才能弹出一个新标签而不是一个窗口。由于此要求,循环将弹出 1 个新选项卡,然后为每个后续链接弹出新窗口。

jQuery("a.site").each(function(){
    var string = jQuery(this).attr("href") + "/" + jQuery("#arguments").val();
    jQuery(this).attr("href",string);
    jQuery(this).trigger('click');
});

我尝试过以编程方式创建链接并单击它们,使用不同的插件、超时、方法,我什至尝试过“菊花链”过程并在页面加载时触发它(一个巨大的 PHP/GET 变量/页面加载触发器事情),但它仍然会弹出窗口,因为该事件不是用户发起的。

我试过了 this ...

function clickLink(link) {
var cancelled = false;

if (document.createEvent) {
    var event = document.createEvent("MouseEvents");
    event.initMouseEvent("click", true, true, window,
        0, 0, 0, 0, 0,
        false, false, false, false,
        0, null);
    cancelled = !link.dispatchEvent(event);
}
else if (link.fireEvent) {
    cancelled = !link.fireEvent("onclick");
}

if (!cancelled) {
    window.location = link.href;
}
}

虽然我可以阅读它,但我对它的理解还不够深入,无法理解我应该传递给该函数的内容。我试过这样的东西......

jQuery("a.site").each(function(){
    var string = jQuery(this).attr("href") + "/" + jQuery("#launcher").val();
    jQuery(this).attr("href",string);
    clickLink(jQuery(this));
});

但我收到“对象没有方法‘dispatchEvent’”控制台错误。我尝试使用相同的“var 事件”并调用...

link.trigger(event);

但是那里也有一个控制台错误。我唯一没有尝试过的是 this Q/A(使用 jQuery.get() 打开一个选项卡并写入)但看到它仍然调用 window.open(),我觉得我仍然会遇到完全相同的循环问题。


好的。把所有这些都弄清楚了...除了“它由您的浏览器控制”之外,还有真正的答案吗?我觉得必须有办法。谢谢,对不起小说:)

最佳答案

查看使用 dispatchEvent 打开新标签:{tested on chrome}

DEMO

$('a.site').each(function () {  
    var clk = document.createEvent("MouseEvents");
    clk.initMouseEvent("click", false, true, window, 0, 0, 0, 0, 0, true, false, false, true, 0, null);
    this.dispatchEvent(clk);
});

关于javascript - 使用 jQuery 打开多个选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20845132/

相关文章:

tabs - 如何在 Ionics 中有条件地隐藏和显示选项卡?

javascript - main.js Electron中程序的执行顺序(其中还使用了nodejs的child_process的exec)

javascript - 如何在我的 HTML 网页中包含我的 Javascript 文件和/或 jQuery

javascript - Chrome扩展程序弹出: running JavaScript,响应按钮点击

PHP - 从字符串中删除所有选项卡

tabs - 如何自动确定vim中的标签类型并相应地设置expandtab?

javascript - 在 Sequelize 中减去 2 个字段

JavaScript 条件语句失败

javascript - jQuery 动画只逐字渲染文本

javascript - 提交表单请求后关闭弹出窗口