[英]Page becomes 'frozen' in Chrome after commandLink with target=“_blank” is pressed
這是jsf代碼:
<h:commandLink id="previewlink" value="#{msg['report.preview']}" target="_blanc">
<f:param name="printpreview" value="#{previewTitle}"/>
</h:commandLink>
當我按下鏈接時,新頁面將在新選項卡中打開,並且可以正常工作,但是父頁面被阻止(即,其commandLinks均不起作用)。 在Firefox中,兩個頁面上的所有內容均正常運行。
有什么建議么?
UPD:img中的源代碼(無法在Chrome中找到文本版本)
查看生成的JavaScript函數,您將Sun Mojarra用作JSF實現(請注意,將來有更多詳細信息,例如,您可能還使用了Apache MyFaces)。
我剛剛在Mojarra 1.2_14的Tomcat 6.0.20上嘗試了以下SSCCE:
<%@ 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上可以完美運行。
但是,我回想起與Safari類似的JavaScript問題,該問題已在Mojarra 1.2_08周圍解決。 確保您使用的是最新的Mojarra版本。 您可以在他們的主要開發站點上獲得它。 希望這可以幫助。
完整生成的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>
target =“”屬性僅用於框架或與HTML 4.01一起使用
谷歌瀏覽器在該區域存在一個著名的問題。
請嘗試使用javascript-jQuery,以獲得更好的跨瀏覽器兼容性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.