使用jQuery打开多个选项卡
好的,我觉得我已经在这里做了尽职调查… JSFIddle – http://jsfiddle.net/taytayevanson/8BpHw/5/
我正在尝试创建一个将弹出多个选项卡的页面。 我明白使用这段代码……
New Tab
将弹出1个新标签。 但是,正如此 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变量/页面加载触发器事物)上触发它但是它仍会弹出窗口,因为事件不是用户启动的。
我试过这个 ……
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);
但那里也有一个控制台错误。 我唯一没有尝试过的是这个 Q / A(使用jQuery.get()来打开一个标签并写入它)但看到它仍然调用window.open(),我觉得我还会遇到完全相同的循环问题。
好。 得到了所有这些……除了“它是由你的浏览器控制”之外,还有一个真正的答案吗? 我觉得必须有办法。 谢谢,对不起小说🙂
请参阅使用dispatchEvent
打开新标签:{在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); });
我不会依赖于使用触发式click
来打开链接,并非所有浏览器都会支持它,就像用户点击它一样(出于明显的安全原因)
只需循环遍历元素并抓住href,按照您想要的方式操作它,并将结果传递给window.open(url)
。