【问题标题】:Read variables in .JS HTML include [duplicate]读取.JS HTML中的变量包括[重复]
【发布时间】:2012-06-06 20:54:53
【问题描述】:

可能重复:
Getting URL of executing JavaScript file (IE6-7 problem mostly)

嗨,我的页面有这一行:

<script type="text/javascript" src="pixel.js?name=Test&age=21"></script>

我需要 pixel.js 来访问变量名称和年龄,这怎么可能?我尝试使用地址栏变量(获取 POST 数据)方法,但结果未定义,因为我想这在技术上不在地址栏中...

谢谢 克雷格

【问题讨论】:

  • 我同意这是一个骗局,但这个问题没有很好的答案(可能是因为真的没有答案)。
  • 如果您总体上解释了您想要做什么,那么几乎可以肯定有一种更好、更可靠的方式来完成您正在做的事情。
  • @Pointy 如果另一个问题绝对是骗子但没有好的答案,那么我们应该努力改进那个问题的答案(即使最终答案是“没有解决方案”)。
  • @Blowski 很公平:-)

标签: javascript html


【解决方案1】:

我认为只要 pixel.js 是静态文件,您就不能这样做。如果你想做这样的事情,你必须使用一些服务器处理程序来提供 javascript 文件并读取查询字符串参数。

【讨论】:

    【解决方案2】:

    您是否需要将变量从您的 HTML 页面传递给 JavaScript 或者您在做什么?

    如果您真的需要这样做,请查看本教程: http://feather.elektrum.org/book/src.html

    我居然找到了类似的讨论,刷了user378221的回答: Passing parameters to JavaScript files

    我建议在单独的脚本标签中声明变量,然后包含文件。

    【讨论】:

      【解决方案3】:

      您只能通过查找带有您的文件名的脚本标签然后解析src 属性来做到这一点......像这样:

      var scripts = document.getElementsByTagName('script'),
          scriptTest = /^pixel\.js/,
          pixelScript, params,
          getScriptParams = function(scriptSrc){
              var qSplit = scriptSrc.split('?'),
                  aSplit = qSplit[1].split('&'),
                  retVals = {}, pSplit;
      
              for (var i = 0, il = aSplit.length; i < il; i++) {
                  pSplit = aSplit[i].split('=');
                  retVals[pSplit[0]] = pSplit.length > 1 ? pSplit[1] : null;
              }
      
              return retVals;
          };
      
      for (var i = 0, il = scripts.length; i < il; i++) {
          if (scriptTest.test(scripts[i].src)) {
              pixelScript = scripts[i];
          }
      }
      
      params = getScriptParams(pixelScript.src);
      

      【讨论】:

        【解决方案4】:

        免责声明:未经测试

        只需在脚本元素上放置一个 ID,然后从包含的脚本中获取它(它们存在于同一个 DOM 上,所以它应该可以工作)

        HTML:

        <script id="blah" type="text/javascript" src="foo.js?key=value" />
        

        foo.js:

        console.log(document.getElementById('blah').src);​
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-14
          • 1970-01-01
          • 1970-01-01
          • 2014-11-12
          • 1970-01-01
          • 2014-10-12
          • 2019-11-25
          • 2017-08-25
          相关资源
          最近更新 更多