我的服务器上有JS脚本,它将触发跟踪像素并提供适当的文件。

第三方将我的脚本作为源加载,并在其站点单击时调用“ getFile({...})”函数。

在我的JS中,我使用了此功能,但在Safari Mac,PC和IE(各种)上无法获得一致的结果。似乎加载不正确。

function getFile(options){

    if ( (!options.email) || (!options.ref3) || (!options.ref4)){
        return false;
    }

    downloadApp();
    var url="http://www.example.com/mysrc?image=1";
    for (var f in options) {
        url=url+"&"+f+"="+encodeURIComponent(options[f]);
    };
    var oImg=document.createElement("img");
    oImg.setAttribute('src', url);
    oImg.setAttribute('alt', 'na');
    oImg.setAttribute('height', '1px');
    oImg.setAttribute('width', '1px');
    document.body.appendChild(oImg);

}


因此,似乎document.body.appendChild无法像我们在IE / Safari中那样工作。

有什么替代方案吗?

--UPDATE:该脚本将触发,但是报告example.com域将无法将cookie写入浏览器(出于跟踪目的)。 Safari似乎没有解决方法。他们只是禁止这种行为。

IE似乎需要P3P标头。

最佳答案

Safari无法解决。 Safari要求打开“窗口”或“选项卡”以供第三方设置Cookie。除非打开窗口或标签,否则即使是Iframe也无法正常运行。

他们完全禁止第三方站点设置cookie。

另一方面,通过发送P3P标头可以轻松修复IE。

09-20 14:52