0

JavaScript を介してボタンをクリックしたときにユーザーをリダイレクトしようとしています。だからこのようなもの:

top.location=url;

通常、これにより指定された「url」にリダイレクトされますが、奇妙なことに、十分な数のユーザーが同じページにリダイレクトされています。

Primefaces で動作する JavaScript を使用してユーザーをリダイレクトする方法はありますか? プライムフェイスが干渉している理由がわかりません。

<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 に答える