我有一段javascript代码在执行我的点击,它应该启用正确的点击跟踪。 clickDestinations都是不同的,有很多(跨域)。
var response = window.open(clickDestination, randomName);
if (typeof response.focus === 'function') {
alert('tracking this click-out');
}
此实现的问题是clickDestination由用户提供,其中一些非常旧,因此无法保证正确设置http或https协议。
使用错误的协议调用window.open时,例如在不支持https的网站上使用https,我得到"无法访问此网站"页面( ERR_CONNECTION_CLOSED )。但是我的跟踪器仍然跟踪,因为var响应是一个窗口对象。
任何想法如何在这种情况下检测到错误并且不跟踪?
答案 0 :(得分:1)
如果网址位于同一个网址(此处适用相同的原始政策),则第一个提示有效:
var w = window.open(url);
// if window opened successfully
if ( w ) {
w.onload = function() {
alert('tracking this click-out');
};
}
第二个想法:
window.open
返回对新创建的窗口的引用。 如果通话失败,则会改为null
。 Ref
因此,如果连接失败,因为指定网址的服务器不支持https,或者会返回http null
,因此您可以使用此信息跳过跟踪代码。
示例(未测试):
var response = window.open(clickDestination, randomName);
// if destination cannot be open, skip tracking code
if(!response){
return;
}
if (typeof response.focus === 'function') {
alert('tracking this click-out');
}