2013-04-08 58 views
0

我试图在用户通过javascript点击按钮时重定向用户。因此,像这样:Javascript top.navigation不能与JSF Primefaces一起使用

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; 
     } 


    }; 
+0

查看链接上注册了视觉事件的事件(代码会有帮助)。有一个很好的机会是一些事件拦截你的点击 - 特别是如果你使用的是一个commandLink) – 2013-04-08 17:26:22

+0

http://stackoverflow.com/a/503098/669677这是行不通的? – 2013-04-08 17:47:34

+0

上面也没有工作 – user749665 2013-04-08 21:55:04

回答

1

通过Ajax POST请求的<p:commandButton>的提交默认的母体形式。因此,这本质上是工作的错误工具。代替使用<p:button>。不要忘记返回false,否则它仍然会执行隐式导航。

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

无关到具体问题,javascript pseudoprotocol使得在HTML4/5对应的事件处理程序没有意义的属性,因为它是默认了。此外,$.fn映射是不必要的,当你只是想调用的功能,而不是创建它。上述答案已经考虑到了这一点。最后但并非最不重要的,JS命名约定规定函数名称应该以小写开头。

+0

谢谢你的答案很好。 – user749665 2013-04-08 21:54:08

相关问题