我有一些html,脚本标签中有一堆JS代码。所以我把它移到了一个单独的.js文件中。
JS代码还使用<%ejGet(var)%>
形式的字符串从CGI加载了一些变量。但是在将代码与HTML文件分离后,字符串不会被服务器中的数据替换。
是否有办法将JS文件包含在脚本标记中,或者是否有其他方法可以执行此操作?
<script language="javascript">
<!-- hide
var syncNvram = '<%ejGetWl(wlSyncNvram)%>';
...about 1000 lines more...
</script>
因此,在将此代码移动到单独的文件后,变量不会加载。
答案 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中读取数据。