0

ユーザーを別のWebサイトにリダイレクトする前に、通常のヘッダータグ内でJavaScriptコードを実行したいのですが、実際に機能させる方法がわからないため、コードが実行され、訪問者がリダイレクトされます。

私は以下が欲しい:

<html>
 <head>
  //script here
 </head>
 <body>
 </body>
</html>

<?php header ('Location: example.com') ?>

誰かがそれを正しく行う方法を教えてもらえますか?そうすれば、「ヘッダーはすでに送信されました」エラーは返されませんか?

4

6 に答える 6

4

出力バッファリングを使用します:

<?php

ob_start();
echo "Hello\n";

setcookie("cookiename", "cookiedata");

ob_end_flush();

?>
于 2013-01-26T16:24:01.103 に答える
2

訪問者がサイトからのリンクをたどってこのページにアクセスした場合は、追加のデータを送信して、JavaScriptが有効になっていることをサーバースクリプトに知らせることができます。例えば

$('a').each(function() {
    var url = this.href;

    if (url.indexOf("?") !== -1)
        this.href = url + '&js=1';
    else
        this.href = url + '?js=1';
});

これにより、すべてのリンクが変更され、JavaScriptが有効かどうかを示す特別なパラメーターが含まれるようになります。実行したい追加のJavaScriptコードもここに配置できる場合は、さらに良いでしょう。

サーバースクリプトは if (!empty($_GET['js'])) { ... }、JavaScriptの一部(古い回答2)を作成するか、すぐにリダイレクトを実行するようなものを使用します。

古い答え

RefreshJavaScriptが無効になっている場合に備えて、ヘッダーを送信できます。

<?php

    header('Refresh: 2; url=http://www.example.org');

?>
<html>
 <head>
  //script here
 </head>
 <body>
 </body>
</html>

私はこれを試していなかったことを認めなければなりませんが、うまくいく可能性は十分にあります

古い答え2

ただし、JavaScriptが有効になっていることが確実な場合は、JavaScriptが完了した後にリダイレクトを実行させることができます。URLが常に同じである場合は、PHPコードを省略し、静的な文字列を使用します。

<html>
 <head>
  <script>
  //script here
  location = <?php echo json_encode('http://www.example.org'); ?>;
  </script>
 </head>
 <body>
 </body>
</html>
于 2013-01-26T16:24:56.417 に答える
2


content="<seconds>;url=http://www.the-url.com"


<head>
    <meta http-equiv="REFRESH" content="10;url=http://www.the-domain-you-want-to-redirect-to.com">
</head>
<body>
    <script>
        alert("run before redirect");
    </script>
</body>

http://jsfiddle.net/W9dhW/

于 2013-01-26T16:27:33.233 に答える
0

Locationこれはヘッダーでは不可能です。応答に1つ含まれている場合、ブラウザはリダイレクトされ、Javascriptは実行されません。

クライアント側で何かを実行したい場合は、リダイレクトするURLをフェッチする前に実行するか、最終的なターゲットURLに到達した後に実行します。

于 2013-01-26T16:25:22.887 に答える
0

JavaScriptを実行した後、ユーザーを他のWebサイトにリダイレクトします

<script type='text/javascript'>
    alert('executing some javascript');

    // redirecting to other website
    window.location.href = "http://example.com";
</script>

必要なことを達成するためにPHPは必要ありません(そして使用できません)

于 2013-01-26T16:30:29.230 に答える
0

HTMLを開始する前にphpヘッダーを使用する必要があります

<?php header ('Location: example.com') ?>
<html>
 <head>
  //script here
 </head>
 <body>
 </body>
</html>

注:次の行を使用している場合は<?php header('Location:example.com'); ?>、最初の行で別のページにリダイレクトされるため、意味が少なくなります。

于 2013-01-28T06:14:23.313 に答える