Pie*_*rre 18 javascript jquery internet-explorer google-chrome-frame
如果用户使用过时的浏览器,我会有一个页面提示您安装Google Chrome Frame.
如果用户选择安装插件,它的效果很好.但是,如果他/她选择不安装它并关闭该层; 使用相同的按钮再次打开图层是不可能的.(基本上它只工作一次.)
有没有什么办法可以在每次点击安装时强制Google Chrome Frame打开?
(我尝试过强制cookie,但似乎没有用.)
测试页面在这里.
<!doctype html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"></script>
<![endif]-->
</head>
<body>
<a href="#" class="dngcf">Prompt</a>
<script>
$(function(){
if( $.browser.msie && $.browser.version < 9 ){
if( navigator.userAgent.indexOf('chromeframe') < 0 ){
$('.dngcf').bind('click', function(){
//document.cookie = 'disableGCFCheck=0;path=/;';
CFInstall.check({
url: 'http://www.google.com/chromeframe/eula.html?user=true',
mode: "overlay",
destination: "http://mywebsite.com"
});
});
}else{
alert('GCF is already installed');
}
}else{
alert('You need IE 6, 7 or 8 in order to see the "bug".');
}
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这似乎是与会话相关的问题.
当我重新启动浏览器时,链接再次运行一次.但是,当我只刷新页面时却不会.
此行为是设计使然.它允许管理员check()在每个页面上使用GCF,而不会每次都向用户发出提示.
接受的答案允许您规避此行为.
你对cookie是正确的,但它在显示弹出窗口时也会设置一个私有变量,因此如果不破解cfinstall脚本,我们正在考虑覆盖现有方法.
这是我能得到的最好的.有一个问题,按"取消"然后"关闭"意味着当你再次弹回它时弹出窗口仍然在第二页,但你可以从那里安装,所以我不认为这是一个大问题.(我内心的学生不喜欢它!)
<!doctype html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"></script>
<![endif]-->
</head>
<body>
<a href="#" class="dngcf">Prompt</a>
<script>
$(function(){
if ($.browser.msie && $.browser.version < 9){
if (navigator.userAgent.indexOf("chromeframe") < 0){
$(".dngcf").on("click", function(){
if ($(".chromeFrameOverlayContent").length > 0) {
$(".chromeFrameOverlayContent, .chromeFrameOverlayUnderlay").show();
} else {
CFInstall.check({
url: "http://www.google.com/chromeframe/eula.html?user=true",
mode: "overlay",
destination: "http://mywebsite.com"
});
$("#chromeFrameCloseButton").off("click").on("click", function() {
$(".chromeFrameOverlayContent, .chromeFrameOverlayUnderlay").css({ display: "none" });
});
}
});
} else {
alert('GCF is already installed');
}
} else {
alert('You need IE 6, 7 or 8 in order to see the "bug".');
}
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)