0

我正在使用 PHP 代码在我的网页标签中生成标签。

我正在使用 PHP,因此如果设置了特定的 GET 变量(在本例中为“savedsearch”),它会从我附加到网页的外部 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()window.loadwhich is not a function。它起作用的唯一原因是因为您真的不需要等待 onload 事件吗?在解析脚本时调用它,而不是在 window.onload 事件之后调用。

此外,请务必调用json_encode$savedsearch这将防止 XSS 和字符串转义问题(同时还在字符串周围添加引号)。

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

同时在脚本标签中同时包含 src 和 content 是不可靠的。

于 2013-01-07T03:06:01.990 回答
0

我不确定其他人的答案中概述的内容/src 问题,但除非您的sendsearch函数返回一个函数,否则这将不起作用。您将需要以下内容:

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

这提供了一个可以在onload事件被调用时运行的函数。

根据其他答案,这可能需要与将 javascript 拉入不同的标签一起使用——我不熟悉它是如何工作的。

于 2013-01-07T03:10:59.277 回答