【问题标题】:jQuery Select current script tagjQuery 选择当前脚本标签
【发布时间】:2019-08-07 20:04:02
【问题描述】:

有人知道是否可以在没有任何其他选择器定义的情况下使用 jQuery 选择当前脚本标签?

<script type="text/javascript">
$(document).ready( function(){
    // Here i need to select the current tag "<script ..."
})
</script>

【问题讨论】:

标签: javascript jquery jquery-selectors


【解决方案1】:

在文档就绪方法之外,只做$('script').last();:

<script type="text/javascript">
var currentScript = $('script').last();
$(document).ready( function(){
    //Use the variable currentScript here
})
</script>

或者简单地给你的脚本一个 id。

【讨论】:

  • 我认为如果原始脚本标签设置了deferasync 属性,这将不起作用。
  • 这根本没有意义。它假设您的脚本标签是页面中的最后一个。
  • ↑ 执行时是最后一个,所以代码必须在ready事件回调之外。
  • 如果有其他标签带有async,这是真的吗?
  • @cjm2671ID部分无论如何都有效,只要ID是唯一的。只要包含指定代码的标签不是async,sn-p 就可以工作
【解决方案2】:

实现这一目标的最可靠方法是:

<script>
 (function(script){
    //do whatever you want with script here...
 })(document.currentScript);
</script>

它比其他解决方案更强大,因为您也可以在文档加载后使用它。此外,它不需要定义变量(如果您有多个脚本标签,这可能是一个问题,因为您不能重用相同的变量名)。使用 JQuery:

<script>
     (function(script){
        $(document).ready(function(){
            // do whatever you want after the DOM as loaded here...
        });
     })(document.currentScript);
</script>

【讨论】:

    【解决方案3】:

    我认为这是最快的方式

    <script type="text/javascript">
        var scripts = document.getElementsByTagName("script");
        var thisScript = scripts[scripts.length - 1];
    </script>
    

    【讨论】:

    • 我喜欢非 jQuery 方法
    • 我认为如果原始脚本标签设置了deferasync 属性,这将不起作用。
    • 如果页面上有多个脚本标签怎么办?这不会选择围绕当前 javascript 的脚本标记。它只是选择页面上的最后一个。
    • @JakeWilson 正如评论 Karl-André Gagnon 的类似回答,当浏览器遇到这个脚本标签时,它是页面上的最后一个(只要deferasync 不是设置)。
    【解决方案4】:
    <script type="text/javascript">
      var currentScript = document.currentScript || (function() {
         var scripts = document.getElementsByTagName('script');
         return scripts[scripts.length - 1];
      })();
    <script/>
    

    document.currentScript 适用于大多数浏览器,scripts[scripts.length - 1] 是其他浏览器的后备(可能会对&lt;script async&gt; 施加一些限制)。

    Further discussion

    【讨论】:

      【解决方案5】:

      试试这个

      var scripts = document.getElementsByTagName("script");
      var thisScript = scripts[scripts.length - 1];
      

      【讨论】:

      • 这将返回 all 脚本标签的 type 属性。
      • 前面的评论指的是这个答案的早期版本。当前答案现在与此页面上的其他几个答案相似。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2012-10-21
      • 2017-06-04
      • 1970-01-01
      • 2016-03-28
      相关资源
      最近更新 更多