我试图重定向用户时,他们点击一个按钮通过javascript。像这样:
top.location=url;
正常情况下,这会将您重定向到指定的"url",但奇怪的是,用户被重定向到相同的页面。
是否有一种方法来重定向使用javascript与Primefaces工作的用户?不知道为什么primefaces会干扰。
<div>
<p:commandButton value="Cancel" onclick="javascript:$.fn.RedirectMe('http://google.com')" />
</div>
Javascript: $.fn.RedirectMe = function(url) {
var confirmBox=confirm("Are you sure ?");
if (confirmBox==false)
{
return false;
}
if(typeof(url) =="undefined" || url == null || url==""){
top.location=top.location;
}else{
url = encodeURI(url);
top.location=url;
}
};
<p:commandButton>
默认通过ajax POST请求提交父表单。因此,它本质上是一个错误的工具。
用<p:button>
代替。不要忘记返回false
,否则它仍然会执行隐式导航。
<p:button ... onclick="$.RedirectMe(url); return false;" />
与具体问题无关,javascript
伪协议在HTML4/5兼容的事件处理程序属性中没有意义,因为它已经是默认的。此外,当您只想调用而不是创建函数时,$.fn
映射是不必要的。以上给出的答案已经考虑到了这一点。最后但并非最不重要的一点是,JS命名约定规定函数名应该以小写字母开头。