繁体   English   中英

如何在php中包含js文件?

[英]how to include js file in php?

我在 php 中有一个 js 文件的问题。 如果我像这样包含它:

?> <script type="text/javascript" href="file.js"></script> <?php

该文件未包含在内,我收到一个错误,指出该函数未定义。

当我这样尝试时:

<script type="text/javascript">
document.write('<script type="text/javascript" src="datetimepicker_css.js"></script>');
</script>

document.write 函数中的第一个标签关闭<script type="text/javascript">

这样做的正确方法是什么?

谢谢,塞巴斯蒂安

PHP 与您正在做的事情完全无关。 生成的 HTML 才是最重要的。

在您的情况下,您缺少src属性。

 <script type="text/javascript" src="file.js"></script>

在您的示例中,您使用href属性来告诉在哪里可以找到 JavaScript 文件。 这应该是src属性:

?> <script type="text/javascript" src="file.js"></script> <?php

有关更多信息,请参阅w3schools

Pekka 有正确的答案(因此我将此答案设为社区 Wiki):使用src而不是href来指定文件。

关于:

当我这样尝试时:

  <script type="text/javascript">\n     document.write('<script type="text/javascript" src="datetimepicker_css.js"></script>');\n </脚本>

document.write 函数中的第一个标签关闭
这样做的正确方法是什么?

为此,您不需要或不需要document.write ,但以防万一您确实需要将字符</script>放在script标签中,因为其他原因:您通过确保 HTML 解析器(它不会'不懂 JavaScript) 看不到文字</script> 有几种方法可以做到这一点。 一种方法是逃避/即使您不需要:

<script type='text/javascript'>
alert("<\/script>"); // Works, HTML parser doesn't see this as a closing script tag
//      ^--- note the seemingly-unnecessary backslash
</script>

或者,如果您感觉更偏执:

<script type='text/javascript'>
alert("</scr" + "ipt>"); // Works, HTML parser doesn't see this as a closing script tag
</script>

...因为在每种情况下,JavaScript 都将字符串视为</script>但 HTML 解析器不会。

我找到了一个我喜欢的不同解决方案:

<script>
    <?php require_once("/path/to/file.js");?>
</script>

也以同样的方式处理 style-tags 和 .css-files。

我从来不喜欢关闭 PHP 块以将内容输出到浏览器,我更喜欢捕获我的输出,所以如果在我的逻辑中的某个时刻我决定要更改我的输出(在输出已经发送之后)我可以只删除当前缓冲区。

但正如 Pekka 所说,您在包含 javascript 时遇到问题的主要原因是因为您使用href来指定 js 文件的位置,而您应该使用src

如果您有一个包含函数的函数文件,则添加如下内容:

function js_link($src)
{
    if(file_exists("my/html/root/" . $src))
    {
        //we know it will exists within the HTTP Context
        return sprintf("<script type=\"text/javascript\" src=\"%s\"></script>",$src);
    }
    return "<!-- Unable to load " . $src . "-->";
}

代码中的 n 无需使用?>关闭块,您只需使用:

echo js_link("jquery/1.6/main.js");

PHP 输出的 HTML 与普通 HTML 页面在这方面没有区别。

您绝对不必执行document.write 您的 JS 与您的 PHP 无关,因此第一个示例中肯定存在其他错误(例如文件路径)。

附带说明一下,在脚本中使用</script>会遇到问题。 HTML 解析器在解析之前扫描 JS 时看到关闭脚本标记,并变得混乱。 出于这个原因,您会看到人们在做诸如'<'+'/script'的事情。

编辑:

正如 TJ Crowder 指出的那样,实际上您需要将<script>标记中的'href更改为src 糟糕,实际上 Pekka 在他的回答中指出了这一点,所以实际上在这里添加它是完全多余的。

从页面到 file.js 的路径更有可能是错误的。 只要当您查看页面和查看源代码时您看到标签,它就可以工作,现在是时候调试您的路径是否过于相关,也许您需要在它前面加上 / 。

我试过这个,我有类似的东西

script type="text/javascript" src="createDiv.php?id=" script

并且在createDiv.php我有

document getElementbyid(imgslide).appendchild(imgslide5).innerHTML = 'php echo $helloworld; ';

我变得超级疯狂,因为在createDiv.php开头的 php 我制作了$helloWorld php 变量的格式是从 html 页面剪切和粘贴的

但它不起作用,因为空格是任何人都会告诉任何人有关空格问题的原因,因为我真正的 php 空格仍然有效,但不是这个。

如果你真的想使用 PHP,你可以使用

include "file.php";

或者

require "file.php";

然后在 file.php 中,使用 heredoc 并将其回显。

file.php contents:
$some_js_code <<<_code
function myFunction()
{
   Alert("Some JS code would go here.");
}
_code;

在 PHP 文件的顶部,使用 include 或 require 引入文件,然后在 head(或 body 部分)中将其回显

<?php
require "file.php";
?>
<html>
<head>
<?php
echo $some_js_code;
?>
</script>
</head>
<body>
</body>
</html>

不同的方式,但它的工作原理。 只是我的 $.02...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM