你可以告诉它是星期天,因为我今天“很厚”
如果我像这样调用外部.js文件:
<script type="text/javascript" src="http://www.mydomain.com/script.js"></script>
我可以同时传递一个变量:
<script type="text/javascript" src="http://www.mydomain.com/script.js?variable_name='variable_value'></script>
如果是这样,我如何在script.js上“读取”/使用该变量?
或者甚至更好 - 但我还没有得到关于mod_rewrite的线索:
<script type="text/javascript" src="http://www.mydomain.com/variable_value/script.js></script>
然后使用RewriteRule剥离变量,返回script.js但仍然可以使用script.js中的变量值。
任何建议和帮助请提前致谢。
答案 0 :(得分:2)
JavaScript被加载到页面中,并且不知道用于加载它的URI。
您的选择是:
<script>
元素并读取它的src
属性(希望您不处理延迟的脚本或之前注入过的脚本)文件的结尾)选项3和4安全,简单,非hacky,缓存友好,通常是大多数情况下的最佳选择。选项4是两者中更优雅的。
如果您想使用mod_rewrite将变量保留在给浏览器的URI之外,那么选项2将不适用于您。如果你试图隐藏用户选项中的变量3/4也不会工作(并查看JS src,如果你选择选项1,也会显示它。)
答案 1 :(得分:1)
没有服务器支持的简单示例:
<!-- Init variable on a page before including the script: -->
<script type="text/javascript">
window.variable_name = { ... };
</script>
<!-- Use variable_name inside the script: -->
<script type="text/javascript" src="http://www.mydomain.com/script.js"></script>
答案 2 :(得分:0)
你可以,但它不会做你认为它做的事情。添加查询字符串参数会将这些参数传递给服务于脚本的Web服务器;如果javascript由某种服务器端脚本提供,那么该脚本可以获取查询字符串变量并使用它们执行有意义的操作。
参数不会神奇地出现在javascript中,但你可以做得更容易一些 - 只需在include之前的某个地方设置全局变量,并且包含的脚本将能够看到它们。毕竟,页面上的所有脚本都共享相同的脚本上下文。