5

jQuery BBQ noob の質問: jQuery BBQ 1.2.1 をダウンロードして、jQuery 2.1.0 で使用しようとしています。BBQ は、やりたいことを実行するという意味では機能しますが、コンソールにエラー メッセージが表示されることに気付きました。互換性の問題と思われるものまで追跡しました。エラーを生成するサンプル HTML ページを次に示します。

<!DOCTYPE HTML>
<html>
    <head>
        <title>example</title>
    </head>
    <body>
        example
    </body>
    <script src="../js/lib/jquery-2.1.0.min.js"></script>
    <script src="../js/lib/jquery.ba-bbq.min.js"></script>
</html>

Firefox のコンソール エラーはTypeError: f is undefined. Chrome では、エラーは異なります: Uncaught TypeError: Cannot read property 'msie' of undefined.

jQuery BBQ がかなり古いことに気付きました。jQuery BBQ の新しいリビジョンはありますか? または、新しい代替ライブラリがありますか?

アップデート

jQuery BBQ を使用しているのは、Google 検索で以前に回答された質問: Parsing URL hash/fragment identifier with JavaScriptに送信されたためです。私が解決しようとしている実際の問題は、リンクされた質問と同じです: URI のハッシュ部分の変更に対応し、そのフラグメントを解析することです。

私の目的のために (これまでのところ)、jQuery BBQ を排除し、ハッシュ文字列を取得する (そしてハッシュ記号を削除する) ためのコードを数行書くことができることがわかりました。

    $(window).bind('hashchange', function() {
        var hashString = window.location.hash || '';
        hashString = hashString.replace("#",'');
        myEventHandler(hashString);
    });

それは今のところうまくいきます。これは非常にシンプルで、モジュールの依存関係が 1 つ少ないため、win-win です。jQuery-BBQ の質問に回答がなかったのはそのためだと思います。

4

2 に答える 2

3

あなたの問題が解決されたことをうれしく思います(1年前!)。しかし、この問題を抱えている他の人のために:

この回答でお気づきかもしれませんが、この問題はバージョン 1.3 で廃止され、1.9 で削除された $.browser が原因です。

しかし、それは非常に簡単に修正できます。jquery bbq ソースを開いて f.msie ( h = f.msie のように使用) を検索し、次のように置き換えます。

( navigator.appName == 'Microsoft Internet Explorer') ? true : false

(今、あなたは持っている必要がありますh = ( navigator.appName == 'Microsoft Internet Explorer') ? true : false

于 2015-08-06T16:11:17.070 に答える
0

私のために働いた構文は次のとおりです。

h = ( navigator.appName == 'Microsoft Internet Explorer' ? true : false)

または「if」スイッチの一部として使用する場合...

 (h = ( navigator.appName == 'Microsoft Internet Explorer' ? true : false))
于 2015-10-25T05:56:53.897 に答える