此站点无法访问(ERR_CONNECTION_CLOSED)javascript检测window.open

时间:2017-07-27 12:31:00

标签: javascript http https cross-domain protocols

我有一段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响应是一个窗口对象。

任何想法如何在这种情况下检测到错误并且不跟踪?

1 个答案:

答案 0 :(得分:1)

如果网址位于同一个网址(此处适用相同的原始政策),则第一个提示有效:

var w = window.open(url);

// if window opened successfully
if ( w ) {
    w.onload = function() {
        alert('tracking this click-out');
    };
}

第二个想法:

  

window.open返回对新创建的窗口的引用。   如果通话失败,则会改为nullRef

因此,如果连接失败,因为指定网址的服务器不支持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');
}