通通过SRC属性瓦尔为JavaScript通通过SRC属性瓦尔为JavaScript(Pass va

2019-05-13 13:22发布

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

src="myscript.js?config=true"

我的JS可以直接读取该变种这样的价值呢?

alert (config);

这不工作,Firefox的错误控制台说:“配置没有定义”。 我如何读通过的JS文件src属性通过瓦尔? 难道这简单吗?

Answer 1:

<script>
var config=true;
</script>
<script src="myscript.js"></script>

你不能传递变量JS你尝试的方式。 SCRIPT标签不创建一个窗口对象(其中有一个查询字符串),并且它不是服务器端代码。



Answer 2:

是的,你可以,但你要知道在脚本确切的脚本文件名:

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;
  }
}

您现在有一个“选项”变量,它具有传递的参数。 我没有测试它,我改变了它一点点从http://code.google.com/p/canvas-text/source/browse/trunk/canvas.text.js它的工作原理。



Answer 3:

你可能已经看到这种情况,但真正的JS文件正在使用PHP或其他语言首先预处理服务器端。 服务器端代码将打印/回声设置变量的JavaScript。 我见过一个脚本广告服务之前做到这一点,它让我看看看它是否能与纯醇” JS来完成,但它不能。



Answer 4:

您需要使用Javascript功能来找到脚本的SRC属性和解析后的变量“?”。 使用的Prototype.js框架,它看起来是这样的

var js = /myscript\.js(\?.*)?$/; // regex to match .js

var jsfile = $$('head script[src]').findAll(function(s) {
    return s.src.match(js);
}).each(function(s) {
    var path = s.src.replace(js, ''),
    includes = s.src.match(/\?.*([a-z,]*)/);
    config = (includes ? includes[1].split('=');
    alert(config[1]); // should alert "true" ??
});

我的JavaScript /正则表达式技能生疏,但这是一般的想法。 直接从scriptaculous.js文件撕开!



Answer 5:

但是您的脚本可以找到自己的脚本节点,并检查你喜欢的任何信息src属性和提取。

  var scripts = document.getElementsByTagName ('script');
  for (var s, i = scripts.length; i && (s = scripts[--i]);) {
    if ((s = s.getAttribute ('src')) && (s = s.match (/^(.*)myscript.js(\?\s*(.+))?\s*/))) {
      alert ("Parameter string : '" + s[3] + "'");    
      break;
    } 
  }


Answer 6:

这是否应该做的,是一个公平的问题,但如果你想这样做, http://feather.elektrum.org/book/src.html真正展示了如何。 渲染脚本标记时,假设你的浏览器阻止(目前真实的,但未必是未来的证明),有问题的脚本总是页到这一点,在最后一个脚本。

然后使用一些框架和插件,如jQuery和http://plugins.jquery.com/project/parseQuery这成为相当琐碎。 惊讶有没有为它的插件呢。

有些关联是约翰Resig的降解脚本标记,但运行的代码外部脚本后,不作为初始化的一部分: http://ejohn.org/blog/degrading-script-tags/

积分: 将参数传递给JavaScript文件 , 将参数传递给JavaScript文件



Answer 7:

使用全局变量不是那么干净或安全的解决方案,而不是您可以使用数据-X的属性,它是更清洁和更安全:

<script type="text/javascript" data-parameter_1="value_1" ... src="/js/myfile.js"></script>

从myfile.js你可以访问数据的参数,例如使用jQuery:

var parameter1 = $('script[src*="myfile.js"]').data('parameter_1');

显然“myfile.is”和“parameter_1”具有在2个源匹配)



文章来源: Pass vars to JavaScript via the SRC attribute