0

典型的な「Chrome/FFでは機能しますが、IEでは機能しません」という話。IE9はそれをうまく処理しているようです。

IEコンソールに表示されるのは次の
とおりです。SCRIPT65535:メソッドまたはプロパティへの予期しない呼び出し。
jquery.min.js、3行目文字32461

これは、エラーをトレースするIEプロファイラーのスクリーンショットです。

そして、これが私のNav.jsファイルからのコードです:

    // Build nav menu array
    var navLinks =  [ {"style" : "home"         ,"page" : ""                    ,"name" : "Home"                ,"tier" : 1     ,"icon" : "home"}, 
              {"style" : "job-trans"    ,"page" : "view/jobTransaction" ,"name" : "Job Transactions"    ,"tier" : 1     ,"icon" : "barcode"},
              {"style" : "job"          ,"page" : "view/job"            ,"name" : "Jobs"                ,"tier" : 1     ,"icon" : "inbox"},
              {"style" : "user"         ,"page" : "view/user"           ,"name" : "Users"               ,"tier" : 1     ,"icon" : "user"},
              {"style" : "report"       ,"page" : "page/report"         ,"name" : "Reports"             ,"tier" : 2},// ,"icon" : "signal"},
              {"style" : "customer"     ,"page" : "view/customer"       ,"name" : "Customers"           ,"tier" : 2}
            ];

    var jobSearchAttr = $.browser.msie ? "value=\"Enter Job #\" data-browser=\"IE\" style=\"font-size: 16px\"" : "placeholder=\"Enter Job #\"";
    var userSearchAttr = $.browser.msie ? "value=\"Enter User ID\" data-browser=\"IE\" style=\"font-size: 16px; padding-left:0;\"" : "placeholder=\"Enter User ID\"";

    // Sort array elements into buttons and dropdowns with appropriate elements
    var i, t1LinkArray = [], t2LinkArray = [], t2ClassArray = [];
    for (var i = 0; i < navLinks.length; i++) {
        switch(navLinks[i]["tier"]) {
            case 1:
                t1LinkArray.push( "<li class=\"" + navLinks[i]['style'] + "\"><a href=\"#/" + navLinks[i]['page'] + "\"><i class=\"icon-" + navLinks[i]['icon'] + " icon-white\"></i> " + navLinks[i]['name'] + "</a></li>" );
                break;
            case 3:
                t2LinkArray.push( "<li class=\"" + navLinks[i]['style'] + "\"><a href=\"#/" + navLinks[i]['page'] + "\">" + navLinks[i]['name'] + "</a></li>" );
                t2ClassArray.push( navLinks[i]['style'] );
                break;
        }
    }

    // Create Navbar View
    NavView = Backbone.View.extend({
        // Define View template
        template: _.template( $('#navbarTemplate').html() ),

        initialize: function () {
            this.render();
        },

        render: function () {
            // Call the template and pass data object
            this.$el.html( this.template({ t1LinkArray : t1LinkArray, t2LinkArray : t2LinkArray, t2ClassArray : t2ClassArray }) );
        },

    });
    var nav = new NavView({ el:$('nav') }); 

これがIE7/8でのみクラッシュする理由については途方に暮れています。

編集::これが現在本文の下に埋め込まれているテンプレートです。

        <div class="navbar navbar-fixed-top" style="clear: both;">
          <div class="navbar-inner">
            <div id="navbar" class="container-fluid">

              <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </a>

              <p class="navbar-text pull-right"><a class="brand" href="/workflow3"><em>Brand</em></a></p>

              <div class="nav-collapse pull-left">
                <ul class="nav">
                  <!-- List Tier 1 pages -->
                  {{ t1LinkArray.join("\n") }}

                  <!-- Style dropdown with each child's page class -->
                  <li class="dropdown {{ t2ClassArray.join(" ") }}"> 

                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">More<b class="caret"></b>
                    </a>
                    <ul class="dropdown-menu">
                      <!--  List Tier 2 pages -->
                      {{ t2LinkArray.join("\n") }}
                    </ul>
                  </li>
                </ul>

              </div> <!-- /.nav-collapse -->
            </div> <!-- /.container-fluid -->
          </div> <!-- /.navbar-inner -->
        </div> <!-- /.navbar -->
4

3 に答える 3

1

今日、同僚が IE8 でこの問題のトラブルシューティングを行うのを手伝いました。子を持つことができない要素 (彼の場合は IMG タグ) に追加しようとしていることがわかりました。

jQuery セレクターは.navnew NavView({ el:$('nav') });である必要があることに気付きました(少なくともコード サンプルには) タグがないため、存在しない要素にノードを追加しようとしています。nav

于 2013-01-22T23:15:36.623 に答える
0

最終的に、私はまだここで手元にある実際の問題の解決策を見つけていません。技術的には、これは回避策としてはカウントされませんが、作業環境を作成します。

http://www.chromium.org/developers/how-tos/chrome-frame-getting-started

明らかな利点は、IEの特異性に甘んじる必要がなくなったことです。

何が原因なのかわからないので、どなたでもお気軽にお答えください。

于 2012-06-05T16:14:12.393 に答える