0

奇妙な問題があります。問題は、コードの詳細についてではなく、一般的なアプローチについてです。

シナリオ: Web サイトに「ようこそ画面」​​があります。ウェルカム要素は HTML5 EDGE アニメーションです (小さいファイルではありません ;)) クライアント側の検出を使用して、Cookie が有効になっているかどうかを確認します。Cookie が有効になっている場合は、Cookie['loader_shown'] を確認します。この Cookie が表示されない場合は、JS を使用して全画面のオーバーレイ div を半透明で表示します。この div 内で、AJAX を使用して読み込み要素 html を読み込みます。現時点では、これは別のファイルで定義されており、もちろん EDGE ファイル パッケージ内の他のファイルを参照しています...

これにどのようにアプローチするのが最善かについての提案。HTML5 EDGE 要素は、ウェルカム検出によって最初のオーバーレイ div が開かれた後にのみサーバーから読み込まれることが重要です。

ああ、EDGE 要素は透明のままにしておく必要があります!

4

1 に答える 1

0

解決しました。Cookie がチェックされたら、js ファイルを動的にロードするのが最善の方法です。

コメントのソース

    <!DOCTYPE HTML>

<html lang="en">

<head>

<script type="text/javascript">

    var cookiesEnabled = are_cookies_enabled();

    function are_cookies_enabled()                                                                  // http://sveinbjorn.org/cookiecheck
    {
        var cookieEnabled = (navigator.cookieEnabled) ? true : false;

        if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled)
        { 
            document.cookie="testcookie";

            cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
        }
        return (cookieEnabled);
    }

    // http://www.hunlock.com/blogs/Howto_Dynamically_Insert_Javascript_And_CSS

    if(cookiesEnabled == true)
    {
        var headID = document.getElementsByTagName("head")[0];         

        var newScript = document.createElement('script');

        newScript.type = 'text/javascript';

        newScript.charset = 'utf-8';

        //newScript.onload=scriptLoaded; // If you're loading an external javascript and you need to know when the script has loaded you can simply use .onload=yourfunction; to set up the onload handler. Here's an example. 

        newScript.src = '_loader/head3_C_213_no_preloader_edgePreload.js';

        headID.appendChild(newScript);
    }

</script>

<style>

    .edgeLoad-EDGE-614773 { 
        display:none;  
    }

</style>

</head>

<body style="margin:0;padding:0;">  

<h1>test</h1>
    <div id="Stage" class="EDGE-614773">
    </div>
</body>

</html>

JSがそのようなスクリプトから自分自身をロードすることについて本当に考えたことはありません......ああ、可能性です!

于 2012-07-02T20:45:43.320 に答える