18

ユーザーが古いブラウザを使用している場合、Google Chrome Frameのインストールを求めるページがあります。

ユーザーがプラグインのインストールを選択すると、うまく機能します。ただし、インストールしないことを選択してレイヤーを閉じた場合。同じボタンを使用してレイヤーを再度開くことはできません。(基本的には1回のみ有効です。)

インストールをクリックするたびに Google Chrome Frame を強制的に開く方法はありますか?
(Cookie を強制しようとしましたが、うまくいかないようです。)

更新 [#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>

更新[#2]:

これはセッション関連の問題のようです。
ブラウザを再起動すると、リンクがもう一度機能します。ただし、ページを更新するだけの場合はそうではありません。

[結論]

この動作は仕様です。これにより、管理者はcheck()毎回プロンプトでユーザーを煩わせることなく、すべてのページで GCF を使用できます。

受け入れられた回答により、この動作を回避できます。

4

1 に答える 1

9

Cookie についてはそのとおりですが、ポップアップが表示されるときにプライベート変数も設定されるので、cfinstall スクリプトをハッキングすることなく、既存のメソッドをオーバーライドすることを検討しています。

これは私が得ることができる最高のものです。「キャンセル」を押してから「閉じる」を押すと、再度ポップアップしたときにポップアップが2ページ目に残っているという問題がありますが、そこからインストールできるので、それほど大きな問題ではないと思います. (私の中の衒学者はそれが好きではありません!)

<!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>
于 2012-01-12T14:19:38.743 に答える