使用JS在新选项卡中打开页面

时间:2013-08-20 13:11:16

标签: javascript google-chrome

对于小型设备,我正在将<ul>转换为<select>,如下所示:

$("#blog aside .widget, #blog-single aside .widget").each(function() {
            var widget = $(this);
            $("<select />").appendTo(widget);
            /* option en blanco*/
            $("<option />", {
                "value"   : '',
                "text"    : widget.find('h3').text()+'..'
            }).appendTo(widget.find('select'));
            widget.find('ul li a').each(function(){
                var el = $(this);
                $("<option />", {
                    "value"   : el.attr("href"),
                    "text"    : el.text()
                }).appendTo(widget.find('select'));
            });
        });

我想在新标签中打开此链接,这就是我正在尝试的方式:

$("#blog select, #blog-single select").change(function() {
            var url = $(this).find("option:selected").val();
                /* simulamos target _blank, ya que son externos */
                var a = document.createElement('a');
                a.href= url;
                a.className = 'external';
                a.target = '_blank';
                document.body.appendChild(a);               
                a.click();
        });

似乎在Firefox中完成了这项工作,但在Chrome中我得到了阻止的弹出警告(如果用户点击而不是用JS模拟它,则不会想到

任何解决方法吗?

2 个答案:

答案 0 :(得分:0)

为避免您使用表单来调用屏幕

$("#blog select, #blog-single select").change(function() {
    var url = $(this).find("option:selected").val();
    /* simulamos target _blank, ya que son externos */
    var form = document.createElement('form');
    form.action= url;
    form.method = 'get';
    form.target = '_blank';
    document.body.appendChild(form);               
    form.submit();
    setTimeout(function(){

       document.body.removeChild(form);

    },1000);


 });

答案 1 :(得分:0)

这就是我们最终“解决”它的方式,

检查弹出窗口是否存在,如果没有,则回退到当前标签:

var url = $(this).val();
var win  = window.open(url);
/* Detectar posible bloqueo de popups */
if (win == null || typeof(win) == "undefined" || (win == null && win.outerWidth == 0) || (win != null && win.outerHeight == 0) || win.test == "undefined"){
                    window.location.href = url;
}else if (win){
    win.onload = function(){
    if (win.screenX === 0) {
            win.close();
    }
   };
}