包含在脚本标记中编写的JavaScript文件

时间:2014-12-03 09:49:53

标签: javascript html

我有一些html,脚本标签中有一堆JS代码。所以我把它移到了一个单独的.js文件中。

JS代码还使用<%ejGet(var)%>形式的字符串从CGI加载了一些变量。但是在将代码与HTML文件分离后,字符串不会被服务器中的数据替换。

是否有办法将JS文件包含在脚本标记中,或者是否有其他方法可以执行此操作?

<script language="javascript">
<!-- hide
var syncNvram = '<%ejGetWl(wlSyncNvram)%>';
...about 1000 lines more...
</script>

因此,在将此代码移动到单独的文件后,变量不会加载。

2 个答案:

答案 0 :(得分:1)

问题是您的<% ejGetWl(wlSyncNvram) %>正在服务器上被某些模板或处理引擎执行之后被发送到浏览器,因此浏览器实际上是看到输出,例如

var syncNvram =&#39; abcdefg&#39 ;; //或者输出

您真正要问的问题是,我的服务器端模板/处理引擎可以处理javascript文件而不是html文件。

答案是,它取决于模板/处理引擎,但总的来说,这是一个坏主意。 JS文件应该保留静态资产,原因很多(打破代码,通过CDN分发等)

更好的办法是将它们分开:

<script>var syncNvram = '<%ejGetWl(wlSyncNvram)%>';</script>
<script src="myfile.js"></script>

单独声明。

更好的可能是使用ajax来获取它,但这是一个完全不同的架构,可能不适合这里。

答案 1 :(得分:-1)

为此,您需要从CGI程序生成脚本。

<script src="/cgi-bin/example.js.cgi"></script>

当然,这将是一个不同的 CGI程序,因此将变量置于正确的状态可能会有问题。

通常,您可以使用不同的方法解决问题:在文档中包含数据(在脚本元素中或在<meta>元素之类的元素中,隐藏输入或data-*对相关内容进行属性,然后让静态脚本从DOM中读取数据。