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

Read properties of a script which is returned when my page is loaded

我是 运行 一个 React 应用程序,当我渲染除捆绑包和其他一些文件之外的主页时,我得到这个 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' 作为 属性 执行另一个脚本。非常感谢

您应该可以使用 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>

您可以从页面中检索所有脚本标记并循环遍历它们以找到正确的标记并解析 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);
   }
}