传递javascript变量

时间:2010-11-28 12:53:54

标签: javascript variables rewrite

你可以告诉它是星期天,因为我今天“很厚”

如果我像这样调用外部.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中的变量值。

任何建议和帮助请提前致谢。

3 个答案:

答案 0 :(得分:2)

JavaScript被加载到页面中,并且不知道用于加载它的URI。

您的选择是:

  1. 生成JS服务器端并从查询字符串中添加变量
  2. 抓住(使用通常的DOM方法)页面上的最后一个<script>元素并读取它的src属性(希望您不处理延迟的脚本或之前注入过的脚本)文件的结尾)
  3. 在src外部脚本之前,只需在内联脚本块中包含要作为全局(或命名空间变量)传递的任何变量。 (这是Google使用AdSense的方式)
  4. 作为3,但编写脚本来定义在加载外部脚本后调用的函数并将变量传递给它。
  5. 选项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之前的某个地方设置全局变量,并且包含的​​脚本将能够看到它们。毕竟,页面上的所有脚本都共享相同的脚本上下文。