Страница становится «замороженной» в Chrome после нажатия клавиши commandLink с target = "_ blank" - PullRequest
1 голос
/ 21 января 2010

Вот код jsf:

<h:commandLink id="previewlink" value="#{msg['report.preview']}" target="_blanc">
    <f:param name="printpreview" value="#{previewTitle}"/>
</h:commandLink>

Когда я нажимаю на ссылку, новая страница открывается в новой вкладке и работает нормально, но родительская страница блокируется (т.е. ни одна из ее ссылок CommandLink не работает).В Firefox все отлично работает на обеих страницах.

Есть предложения?

UPD: источник в img (не удается найти текстовую версию в chrome)

альтернативный текстhttp://img402.imageshack.us/img402/2127/source.png

Ответы [ 2 ]

1 голос
/ 22 января 2010

Глядя на сгенерированную функцию JavaScript, вы используете Sun Mojarra в качестве реализации JSF (обратите внимание, что с более подробным описанием в будущем вы, например, могли бы также использовать Apache MyFaces).

Я только что попробовал следующее SSCCE на Tomcat 6.0.20 с Mojarra 1.2_14:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<f:view>
    <html>
        <head>
            <title>SO question 2111438</title>
        </head>
        <body>
            <h:form id="form">
                <h:commandLink id="link" value="link" action="#{bean.action}" target="_blank">
                    <f:param name="paramname" value="paramvalue" />
                </h:commandLink>
            </h:form>
        </body>
    </html>
</f:view>

... с фиктивным методом действия для bean-объекта в области запроса, и он просто работает безупречно на Chrome 3.0.195.38.

Однако я вспоминаю похожую проблему JavaScript с Safari, которая была исправлена ​​примерно в Mojarra 1.2_08. Убедитесь, что вы используете последнюю версию Mojarra. Вы можете получить его на сайте main dev . Надеюсь, это поможет.

Кстати, полностью сгенерированный исходный код HTML был (немного переформатирован):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html> 
    <head> 
        <title>SO question 2111438</title> 
    </head> 
    <body> 
        <form id="form" name="form" method="post" action="/playground/test.jsf" enctype="application/x-www-form-urlencoded"> 
            <input type="hidden" name="form" value="form" /> 
            <script type="text/javascript" language="Javascript">function dpf(f) {var adp = f.adp;if (adp != null) {for (var i = 0;i < adp.length;i++) {f.removeChild(adp[i]);}}};function apf(f, pvp) {var adp = new Array();f.adp = adp;var i = 0;for (k in pvp) {var p = document.createElement("input");p.type = "hidden";p.name = k;p.value = pvp[k];f.appendChild(p);adp[i++] = p;}};function jsfcljs(f, pvp, t) {apf(f, pvp);var ft = f.target;if (t) {f.target = t;}f.submit();f.target = ft;dpf(f);};</script> 
            <a id="form:link" href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('form'),{'form:link':'form:link','paramname':'paramvalue'},'_blank');}return false">link</a><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id8:j_id9" /> 
        </form>
    </body> 
</html>
0 голосов
/ 21 января 2010

Атрибут target = "" используется только для фреймов или с HTML 4.01

В этой области существует известная проблема с Google Chrome.

Пожалуйста, попробуйте, возможно, с javascript - jQuery для лучшей кросс-браузерной совместимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...