0

当用户通过javascript单击按钮时,我试图重定向用户。所以是这样的:

top.location=url;

通常这会将您重定向到指定的“url”,但奇怪的是用户被重定向到同一页面。

有没有办法使用适用于 Primefaces 的 javascript 来重定向用户?不知道为什么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;
        }


    };
4

1 回答 1

1

默认情况下<p:commandButton>,通过 ajax POST 请求提交父表单。因此,它本质上是适合这项工作的错误工具。

改为使用<p:button>。不要忘记 return false,否则它仍然会执行隐式导航。

<p:button ... onclick="$.RedirectMe(url); return false;" />

与具体问题无关javascript,伪协议在 HTML4/5 兼容的事件处理程序属性中毫无意义,因为它已经是默认设置。此外,$.fn当您只想调用函数而不是创建它时,映射是不必要的。上面给出的答案已经考虑到了这一点。最后但同样重要的是,JS 命名约定规定函数名称应以小写字母开头。

于 2013-04-08T18:00:05.957 回答