此网站无法访问(ERR_CONNECTION_CLOSED)window.open的javascript检测
问题描述:
我有这段JavaScript代码做我的clickouts,它应该启用正确的点击跟踪。 clickDestinations都是不同的,并且有很多(跨域)。此网站无法访问(ERR_CONNECTION_CLOSED)window.open的javascript检测
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响应是一个窗口对象。
任何想法如何在这种情况下检测到错误并不追踪?
答
第一个想法有效的,如果URL是在同一个域(同源策略适用于这里):
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');
}
不幸的是,它仍然是一个窗口对象,我得到一个新的标签,上面写着“这个网站无法到达”,例如在Chrome。感谢您的时间。 – Mccandless5
@ Mccandless5我添加了另一个想法。我希望可以有用。 – GibboK
这个答案解释了在这种情况下可以完成的一切。 – Mccandless5