通过SRC属性将变量传递给JavaScript

Rob*_*cks 14 html javascript variables url src

在我的HTML文件中,我已经链接到JS:

src="myscript.js?config=true"
Run Code Online (Sandbox Code Playgroud)

我的JS能直接读取这个var的值吗?

alert (config);
Run Code Online (Sandbox Code Playgroud)

这不起作用,FireFox错误控制台说"配置未定义".如何读取JS文件中通过src属性传递的变量?这很简单吗?

Ita*_*vka 17

<script>
var config=true;
</script>
<script src="myscript.js"></script>
Run Code Online (Sandbox Code Playgroud)

您无法以您尝试的方式将变量传递给JS.SCRIPT标记不会创建Window对象(具有查询字符串),也不是服务器端代码.

  • 是的确如此:问题"我的JS能直接读取这个var的值吗?" 回答"你不能以你尝试的方式将变量传递给JS" (8认同)

Fab*_*ger 5

是的,您可以,但您需要知道脚本中的确切脚本文件名:

var libFileName = 'myscript.js',
    scripts = document.head.getElementsByTagName("script"), 
    i, j, src, parts, basePath, options = {};

for (i = 0; i < scripts.length; i++) {
  src = scripts[i].src;
  if (src.indexOf(libFileName) != -1) {
    parts = src.split('?');
    basePath = parts[0].replace(libFileName, '');
    if (parts[1]) {
      var opt = parts[1].split('&');
      for (j = opt.length-1; j >= 0; --j) {
        var pair = opt[j].split('=');
        options[pair[0]] = pair[1];
      }
    }
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

你现在有一个'options'变量,它传递了参数.我没有对它进行测试,我在http://code.google.com/p/canvas-text/source/browse/trunk/canvas.text.js上进行了一些测试.

  • 为了使脚本更容易集成.Personnaly我发现传递一些http参数(不是真正的参数)比在另一个脚本标记中声明一些变量更容易. (3认同)