0

このリターンは正しく書かれていますか?コードは次のとおりです:

<script type='text/javascript'>
    //<![CDATA[ 
    $(window).load(function(){
    $(window).on('beforeunload', function(){
    return 
    <?php

    // Log out when browser is closed
    echo "  location.href=\"/logout.php?task=EndLive&webcam_id=".$_GET['webcam_id']."\"";

    ?>
    ;
    });
    });//]]>  
</script>  

リターンは正しく書かれていますか? それを書く適切な方法はありますか?

4

2 に答える 2

1

これは正しく書かれていません - PHP の実際の結果がどうであるかを気にせずに、これを言うことができます。(ただし、HTML/JavaScript 関連の質問のために、クライアントに送信された実際のHTML/JSを投稿する必要があります。)

問題は、それreturn制限された生産であり、「暗黙のセミコロンを挿入するのが早すぎる」ことです。

つまり、これら 2 つは異なります。

function f() {
  return "x" // same line
}

function g() { 
  return    // newline after return - ASI kicks in!
  "x"       // this line is NEVER EXECTURED
}

f() // -> "x"
g() // -> undefined

せいぜい、PHP コードは後者ように見えるものを生成するため、正しくありません。このreturnステートメントはlocation.href実行前に関数を終了させます - そしてブラウザの場所は変わりません!

returnまず、ステートメントを関数の最後に移動し、適切な値を指定します。(また、思い出すと、IE には癖があり、この場合、戻り値なしで event.value を使用する必要がありますか? YMMV.)

もちろん、上記のセマンティック構文の問題が修正されたとしても、他の問題がある可能性がありますが、一度に1 つの問題があります:)

于 2013-09-15T16:59:25.143 に答える
0

beforeunload ではユーザーを別のページにリダイレクトできず (javascript の制限)、返される値は文字列である必要があり、後でブラウザーが警告として表示するため、機能しません。

于 2013-09-15T17:08:57.400 に答える