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

时间:2018-06-29 18:05:42

标签: javascript reactjs google-analytics tracking

我正在运行一个React应用,当我从捆绑包和其他文件中渲染主页时,我得到了一个名为https://grcontent.experience-booking.com/file/localhost_script.js的JavaScript脚本:

<!-- 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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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