代码之家  ›  专栏  ›  技术社区  ›  RamAlx

读取加载我的页面时返回的脚本的属性

  •  0
  • RamAlx  · 技术社区  · 8 年前

    我正在运行一个react应用程序,当我呈现除了bundle和其他一些文件之外的主页时,我得到这个javascript脚本 https://grcontent.experience-booking.com/file/localhost_script.js 以下内容:

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-101203313-3"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-101203313-3');
    </script>
    

    在我的主js文件中,我想以某种方式访问这个脚本中的url,但我不知道如何做到这一点?我之所以要这样做,是为了执行另一个以'ua-101203313-3'为属性的脚本。谢谢

    2 回复  |  直到 8 年前
        1
  •  1
  •   Asons Oliver Joseph Ash    8 年前

    你应该可以使用 querySelector ,然后执行类似的操作以获取URL

    注意,我更改了脚本src url,因此它实际上会被调用

    var tag = document.querySelector('script[src^="https://www.googletagmanager"]');
    var url = tag.src;
    console.log(url)
    
    // and one could also very simple get the id, like this
    var params = (new URL(tag.src)).searchParams;
    console.log(params.get("id"))
    <script async src="https://www.googletagmanager_oops.com/gtag/js?id=UA-101203313-3"></script>
        2
  •  1
  •   Mike Bell    8 年前

    您可以从页面中检索所有脚本标记,并循环遍历它们以找到正确的脚本标记并解析 src 属性。类似于:

    var scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));
    
    for (var i=0; i<scripts.length; i++) {
       var script = scripts[i];
       if (script.src && script.src.startsWith('https://www.googletagmanager.com') ){
          return getIdFromSrc(script.src);
       }
    }
    
    推荐文章