在jsf中使用h:commandLink时,请避免在浏览器中使用弹出窗口阻止程序

时间:2018-06-06 09:32:25

标签: javascript jsf-2

我尝试在浏览器中打开一个新选项卡,但是当我点击链接时,浏览器会阻止此操作。如何在不禁用块的情况下解决此问题?我需要一个新选项卡,而不是渲染新页面我当前的页面。 我在facelet中的代码:

<h:commandLink style="width: 100%; height: 100%;"
                     actionListener="#{editor.actionPerformed}"
                     >
        <f:ajax render="@this" execute="@this"/>
    </h:commandLink>

动作侦听器尝试打开这样的窗口:

String script = "window.open('" + url + "');";

当我尝试启动此脚本时,它会使该窗口.open返回一个空值。 我不喜欢在点击上打开新标签,并在分配地址后给它。使用此方法存在一些问题。使用XMLHttpRequest时我也无法到达窗口的开头,这是一个方法:

    script.append("var req = getXmlHttp();");
    script.append("req.open('GET', '").append(url).append("');");
    script.append("req.setRequestHeader('Access-Control-Allow-Origin', 
    '").append(url).append("');");
    script.append("req.send(null);");
    script.append("if (req.status == 200) {").append("window.open('" + url + 
    "'); ").append("}");

0 个答案:

没有答案