Browser-Update.org提供了一个很好的javascript,可以提醒过时浏览器的用户更新它们。不幸的是(a)IE7未包含在默认的过时浏览器列表中,并且(b)该脚本无法通过SSL工作。
他们建议的脚本是
<script type="text/javascript">
var $buoop = {}
$buoop.ol = window.onload;
window.onload=function(){
try {if ($buoop.ol) $buoop.ol();}catch (e) {}
var e = document.createElement("script");
e.setAttribute("type", "text/javascript");
e.setAttribute("src", "http://browser-update.org/update.js");
document.body.appendChild(e);
}
</script>
相反,我正在使用外部JavaScript,如下所示:
app.onload(function() {
if ('https:' === document.location.protocol) return; // Browser Update script is not currently available over SSL.
var $buoop = {vs:{i:7,f:2,o:10.5,s:2,n:9}};
var e = document.createElement('script');
e.setAttribute('type', 'text/javascript');
e.setAttribute('src', 'http://browser-update.org/update.js');
document.body.appendChild(e);
});
要明确:app.onload()
是一个很好的函数,可以为window.onload
处理程序添加函数。
这似乎有效,但有一个不幸的副作用。如果警报被取消,则不应再在该浏览会话中显示。使用上面的脚本,这似乎不起作用。在IE7上,警报发生在每个页面加载上。有办法吗?
答案 0 :(得分:1)
var _shown = false;
app.onload(function() {
if(!_shown) {
if ('https:' === document.location.protocol) return; // Browser Update script is not currently available over SSL.
var $buoop = {vs:{i:7,f:2,o:10.5,s:2,n:9}};
var e = document.createElement('script');
e.setAttribute('type', 'text/javascript');
e.setAttribute('src', 'http://browser-update.org/update.js');
document.body.appendChild(e);
_shown = true;
}
});
如果页面在导航之间重新加载,则将其存储在cookie中或作为会话变量。
答案 1 :(得分:1)
您可以在显示提醒时保存Cookie,并在显示提醒之前每次检查该Cookie是否存在。