Iframe 如何检测Google Analytics是否已加载并能够跟踪自定义事件

Iframe 如何检测Google Analytics是否已加载并能够跟踪自定义事件,iframe,google-analytics,mobile-safari,google-analytics-api,google-analytics-firebase,Iframe,Google Analytics,Mobile Safari,Google Analytics Api,Google Analytics Firebase,当我们加载带有视频播放器的iframe时,会出现一些问题,视频播放器会将播放事件发送到加载在该iframe内(另一个域上)的Google Universal Analytics(Analytics.js)。没有在iOS设备上加载GA跟踪器,因此没有向GA发送事件跟踪 在Android和包括桌面在内的其他设备上,它可以正常工作,但在iOS上不行,除非我更改了iOS Safari上默认的第三方cookie设置 我使用Google Analytics()的无cookie方法进行了测试,这样iOS设备就

当我们加载带有视频播放器的iframe时,会出现一些问题,视频播放器会将播放事件发送到加载在该iframe内(另一个域上)的Google Universal Analytics(Analytics.js)。没有在iOS设备上加载GA跟踪器,因此没有向GA发送事件跟踪

在Android和包括桌面在内的其他设备上,它可以正常工作,但在iOS上不行,除非我更改了iOS Safari上默认的第三方cookie设置

我使用Google Analytics()的无cookie方法进行了测试,这样iOS设备就能够正确地向GA发送跟踪事件。但是,我只想在常规GA方法不起作用时使用该方法作为备用方法,因为通过指纹方法创建的用户ID在移动设备上不是非常唯一的

因此,我需要一种方法来检测常规GA方法何时能够跟踪事件,如果由于未加载跟踪器或禁用cookie而无法跟踪,则使用无cookie方法加载GA并跟踪事件

谢谢

您可以尝试在
ga
对象上使用(似乎)未记录的属性:
ga.loaded

我在官方文件中能找到的关于该物业的唯一参考是一个描述以下内容的示例:

//单击指向产品的链接时调用。
函数onProductClick(){
//为简洁起见,截短了谷歌分析示例。
// [...]
}
因此,您可以尝试类似的方法:

if(typeof ga!='undefined'&&ga.hasOwnProperty('loaded')&&ga.loaded==true){
//ga已成功加载。自定义事件可用
// ...
}否则{
//ga未加载,退回到另一个跟踪实现。
// ...
}

在使用ga()方法跟踪事件之前,应使用check JavaScript
window.ga&&ga.loaded
变量:

if(window.ga && ga.loaded) { {
    // if yes, rely on GA to follow link
    ga('send', 'event', 'outbound', 'click', url, {
        'transport': 'beacon',
        'hitCallback': function(){document.location = url;}
    });
} else {
    // if not, follow link ourselves
    document.location = url;
}

更多关于

的信息尽管谷歌的电子商务跟踪文档仍然包含引用
ga.loaded
的代码,但它似乎并不是一件真正的事情(或者至少不是在所有使用通用分析的配置中)。测试
typeof window.ga==“function”
似乎就足够了。有趣的是,
ga.loaded
没有正式文档,但谷歌也在示例中使用了它。例如,在这里,我宁愿使用自定义解决方案,也不依赖于未文档化的
ga.loaded
。我已经更新了JS分析代码<代码>(函数(i,s,o,g,r,a,m){…a.onload=function(){i[r].isLoaded=true}…},然后我可以测试
ga.isLoaded