0

PHPコードを使用して、Webページのタグにタグを生成しています。

私はPHPを使用しているので、特定のGET変数(この場合は「savedsearch」)が設定されている場合、Webページに添付している外部のjavascriptファイルから関数を実行します。

これが私が使用しているコードです:

<?php
//check if a saved search has been used
if (isset($_GET["savedsearch"])) {
    $savedsearch=$_GET["savedsearch"];
    echo "<script type='text/javascript' src='search.js'>
    window.onload=sendsearch($savedsearch);
    </script>";
}
else {
    echo "<script type='text/javascript' src='search.js'></script>";
}
?>

これは機能していません(savedsearchが設定されている場合は関数を実行しません)...このような関数を実行できますか?

ページの本文にJavaScriptやPHPを含めずにこれを行う方法は他にありますか?

よろしくお願いします。

4

3 に答える 3

1

src 属性を持つスクリプト タグがある場合、そのタグ内のコードは実行されません。別のタグを追加してコードを実行する必要があります。スクリプト タグを使用してスクリプトを取得したり、インライン スクリプトを実行したりすることはできません。

sendsearch()また、 whichの結果はwindow.load関数ではありません。それが機能している唯一の理由は、あなたのケースで onload イベントを待つ必要がないからですか? window.onload イベントの後ではなく、スクリプトが解析されるときに呼び出されます。

また、 XSS と文字列のエスケープの問題を防ぐために、必ず を呼び出しjson_encodeてください (文字列を引用符で囲みます)。$savedsearch

<?php
//check if a saved search has been used
echo "<script type='text/javascript' src='search.js'></script>";
if (isset($_GET["savedsearch"])) {
    $savedsearch=json_encode($_GET["savedsearch"]);
    echo "<script type='text/javascript'>
       // If you don't need to wait for the onload event
       sendsearch($savedsearch);
       // If you do need to wait for the onload event
       window.onload = function(){
         sendsearch($savedsearch);
       };
    </script>";
}
?>
于 2013-01-07T03:07:46.790 に答える
0

なぜ試してみませんか:

<?php
//check if a saved search has been used
if (isset($_GET["savedsearch"])) {
    $savedsearch=$_GET["savedsearch"];
    echo "<script type='text/javascript' src='search.js'></script>
          <script>
            window.onload=sendsearch($savedsearch);
          </script>
         ";
}
else {
    echo "<script type='text/javascript' src='search.js'></script>";
}
?>

script タグに src と content の両方を同時に含めるのは信頼できません。

于 2013-01-07T03:06:01.990 に答える
0

他の人の回答で概説されている content/src の問題についてはわかりませんが、関数がsendsearch関数を返さない限り、これは機能しません。代わりに次のものが必要です。

window.onload=function(){sendsearch($savedsearch)};

onloadこれにより、イベントが呼び出されたときに実行できる関数が提供されます。

これは、他の回答のように、javascript を別のタグにプルすることと組み合わせて使用​​する必要がある場合があります。

于 2013-01-07T03:10:59.277 に答える