挂钩 Javascript 加载特定的 JS 文件
Hooking Javascript Onload for a specific JS file
经过大量故障排除后,我发现我的 ga()
命令失败了,因为它们在 Google Analytics 加载到我的 Shopify 商店之前 运行。我发现了一个示例代码片段,据说它会延迟命令直到 GA 加载,但它使用的是 JQuery 而我的网站没有使用。
<script>
$(window).ready(function() {
$('head script[async][src*="analytics"]').on('load', function() {
ga('set', 'dimension1', 'insert_value');
ga('set', 'dimension2', 'insert_value');
ga('set', 'dimension3', 'insert_value');
});
});
</script>
我正在研究如何将其转换为纯 Javascript,我想我可以使用 addEventListener() 来等待它加载而不是加载。应该使用哪些函数来挂载另一个 Javascript 文件?
您的方向是正确的,我猜您的事件似乎没有被触发,因为您的加载顺序存在一些问题(即事件在您注册处理程序之前被触发)。以下内容应涵盖该情况。唯一的要求是在触发 DOMContentLoaded
之前插入脚本标签本身。
document.addEventListener("DOMContentLoaded", function() {
const loaded = function() {
console.log("Script loaded");
}
if (ga !== undefined) {
loaded()
} else {
document.querySelector('script[async][src*="analytics"]').addEventListener("load", loaded);
}
});
<script src="https://www.google-analytics.com/analytics.js" async="true"></script>
经过大量故障排除后,我发现我的 ga()
命令失败了,因为它们在 Google Analytics 加载到我的 Shopify 商店之前 运行。我发现了一个示例代码片段,据说它会延迟命令直到 GA 加载,但它使用的是 JQuery 而我的网站没有使用。
<script>
$(window).ready(function() {
$('head script[async][src*="analytics"]').on('load', function() {
ga('set', 'dimension1', 'insert_value');
ga('set', 'dimension2', 'insert_value');
ga('set', 'dimension3', 'insert_value');
});
});
</script>
我正在研究如何将其转换为纯 Javascript,我想我可以使用 addEventListener() 来等待它加载而不是加载。应该使用哪些函数来挂载另一个 Javascript 文件?
您的方向是正确的,我猜您的事件似乎没有被触发,因为您的加载顺序存在一些问题(即事件在您注册处理程序之前被触发)。以下内容应涵盖该情况。唯一的要求是在触发 DOMContentLoaded
之前插入脚本标签本身。
document.addEventListener("DOMContentLoaded", function() {
const loaded = function() {
console.log("Script loaded");
}
if (ga !== undefined) {
loaded()
} else {
document.querySelector('script[async][src*="analytics"]').addEventListener("load", loaded);
}
});
<script src="https://www.google-analytics.com/analytics.js" async="true"></script>