Google chrome frame overlay works only once

后端 未结 1 2045
独厮守ぢ
独厮守ぢ 2021-02-04 03:50

I have a page that prompts for a Google Chrome Frame installation if the user uses an outdated browser.

It works great if the user chooses to install the plugin

相关标签:
1条回答
  • 2021-02-04 04:44

    You're right about the cookie, but it annoyingly also sets a private variable when it shows the popup, so without hacking the cfinstall script we're looking at overriding existing methods.

    This is the best I can get. There's a problem where pressing "cancel" and then "close" means that the popup is still on the 2nd page when you pop it back up again, but you can install from there so I don't think it's that big an issue. (The pedant in me doesn't like it though!)

    <!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>
    
    0 讨论(0)
提交回复
热议问题