1

このページ(一時的な場所)で、ブラウザーがFloat64Arrayをサポートしているかどうか、およびこのページにリダイレクトしない場合は、ユーザーに別のブラウザーを使用するように指示していることを検出しようとしています。ただし、エラーは最初にlibfreecell-solver.min.jsで発生し、その後にのみロードされるため、リダイレクトはWindowsXP32ビット上のMSIE8では機能しないようです。

どうすれば修正できますか?

4

1 に答える 1

2

IE ブラウザーには、他の誰も採用していない独自のブラウザー検出スキームが組み込まれています。IE のバージョンが 10 未満であれば、信頼できると思います。次のようになります。

<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->

<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->

<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>

基本的には、その中に<!--[if lte IE 9]-->タグを含むタグを追加して、がらくたブラウザを送信したい場所へ<script>の呼び出しを行います。window.locationおそらくあなたが望んでいたほどエレガントではありませんが、少なくとも信頼できます.

このページからの抜粋: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx

更新: 実際のスクリプトを見ると、解析/構文エラーがすぐにわかります。

(function() {
    try {
        var a = new Float64Array(1);
        return; //no need
    } catch(e) {
        window.location.replace("../../js-fc-solve/incompatible-browser.html");
    } // Closing the catch block, but not closing the function block
)();

ブレースを追加します。

(function() {
    try {
        var a = new Float64Array(1);
        return; //no need
    } catch(e) {
        window.location.replace("../../js-fc-solve/incompatible-browser.html");
    } // Closing the catch block
})(); // Close the function block before trying to call the anonymous function

そのため、他のエラーが含まれるライブラリを含めようとする前に、ユーザーがリダイレクトされる場合とそうでない場合があります。また、ライブラリを実行するために必要なすべての機能が検出される場合とされない場合があります。ブラウザに依存すると思います(皮肉なことは意図していません)。

それが機能しない場合は、ユーザーをソルバー ページに送るか、互換性のないブラウザー メッセージを表示するかを決定する中間ページを作成できます。

于 2013-01-21T19:10:20.627 に答える