我一直认为广告和应用商店之间坐在重定向页面上。 该广告存在为引导到重定向页面静态URL。 重定向页面发送Ajax请求给第三方,设置一个cookie,然后重定向到AppStore的。 一切都很好并不鲜见。
所以它仍然在Safari浏览器选项卡中的重定向页面无法关闭本身。 我遇到的问题是,当用户如果页面已经从高速缓存中清除返回到Safari浏览器,Safari会重新加载它触发重定向。 我不希望用户得到扔进AppStore的意外。
一个解决办法是检查一个cookie的存在,如果它不存在重定向,但保留该用户点击的情况下,边缘上的另一个横幅广告,并没有得到相应的重定向。 我试图附加一个锚,防止用户发起刷新的URL,但Safari浏览器的自动刷新机制不尊重编程方式添加哈希值。
如果我可以用一个动态源生成引导用户到页面的URL,我可以生成一个时间戳,但现在的源URL是静态的。 有没有人有这个使用客户端代码的解决方案? 或者,这是真的只可解使用服务器端解决方案?
最后我选择做一个两个阶段的重定向。 用户点击旗帜和被定向到:
http://myserver.example.com?someKey=someValue
我有一个做了这样的功能:
// Do I have a visited param?
if ($.url(window.location.href).param('visited') === '1') {
// Do I have a visited cookie?
if (helper.retrieveCookie('VISITED') == undefined) {
console.log('Setting visited cookie');
helper.storeCookie('VISITED', '1');
return 1; // Redirect to AppStore.
}
// Have param and cookie
console.log('VISITED cookie set');
console.log('Refreshed');
return 2; // Don't redirect.
} else {
// No param
helper.removeCookie('VISITED');
return 0; // Redirect to self with &visited=1
}
所以基本上,我们将通过代码两次有意义和N次之后,由于刷新。 在我们做我们的AJAX请求第一遍,然后重定向到我们自己与添加PARAM。 在第二遍期间,我们设置cookie并且重定向到AppStore的。 页面的任何后续负荷将同时拥有一个cookie,并设置了一个param,不会重定向。 新的横幅点击不会有帕拉姆所以他们会正常执行。
这不是最漂亮的解决方案,因为我们需要重新加载我们的重定向页面,但由于它的内容应该被缓存,命中应该是最小的。
如何在着陆页上添加一个javascript?
if (history.length < 2)
history.back();
else
location.href = '/thankyoufordownloading.htm';
我没有测试它自己,但它可以工作。