Ответ 1
Вы правы в cookie, но это раздражает и устанавливает частную переменную, когда она показывает всплывающее окно, поэтому без взлома cfinstall script мы смотрим на переопределение существующих методов.
Это лучшее, что я могу получить. Там проблема, когда нажатие "отменить", а затем "закрыть" означает, что всплывающее окно все еще находится на второй странице, когда вы снова загружаете его, но вы можете установить оттуда, поэтому я не думаю, что это большая проблема. (Педант во мне не нравится, хотя!)
<!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>