Подтвердить что ты не робот

Оверлей хромового кадра Google работает только один раз

У меня есть страница, которая запрашивает установку Google Chrome Frame, если пользователь использует устаревший браузер.

Он отлично работает, если пользователь хочет установить плагин. Но если он/она не захочет установить его и закрыл слой; Невозможно снова открыть слой с помощью той же кнопки. (В принципе, он работает только один раз.)

Есть ли способ заставить Google Chrome Frame открываться каждый раз, когда я нажимаю на установку?
(Я пытался заставить файл cookie, но, похоже, не работает.)

update [# 1]:

Страница тестирования здесь.

<!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>

update [# 2]:

Кажется, это проблема , связанная с сеансом.
Когда я перезапускаю браузер, ссылка снова работает один раз. Но, однако, я не только обновляю страницу.

[вывод]

Это поведение по дизайну. Он позволяет администратору check() для GCF на каждой отдельной странице, не раздражая пользователя с подсказкой каждый раз.

Принятый ответ позволяет обойти это поведение.

4b9b3361

Ответ 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>