0

これを絞り込むのに問題があります。
IE8以降では正常に動作します。
IE7には開発者ツールがないため、これをデバッグする方法すらわかりません。

エラーは6256行目(以下のスニペットの最初)を示しています。char 6('if'の'i'の文字); コード0:

if ( typeof elem.getElementsByTagName !== "undefined" ) { /***this is the line that throws Invalid Argument***/
    // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
    jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );

    // Splice the scripts into ret after their former ancestor and advance our index beyond them
    ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
    i += jsTags.length;
}

コードは関数cleanの一部です。

これに取り組む方法について何かアイデアはありますか?

編集I: IE9でデバッガーを開き、その行にブレークポイントを設定してからスタックトレースを開くと、次のように表示されます。

ここに画像の説明を入力してください

したがって、$(document).readyによってトリガーされると思います

編集 IIjsfiddleが現在ダウンしているようですので、ここにコードを投稿してjsbinスニペットを作成しています。

http://jsbin.com/avajuw/1/edit

HTML:

<div id="navigation-block" style="width: 154px; height: 100%;">
  <ul id="sliding-navigation">
    <li class="sliding-element">
         <h4>Docs</h4>
    </li>
  </ul>
</div>

JS:

$(document).ready(function () {
  // the actual code I run is in comments
  // var baseRestUrl = top.location.protocol + '//' + top.location.host + top.location.pathname + 'jaxrs';
  var baseRestUrl = 'http//host:port/archive/jaxrs';
  var linksRestUrl = baseRestUrl + '/links';
  var fileRestUrl = baseRestUrl + '/file';
  // var params = top.location.search;
  var params = 'pnd=231352122&pgv=654321321321';

  // $.getJSON(linksUrl, function(json) {   //to get something like:
  var json = {
    "links": {
        "lista": [{
            "clipExt": "pnd",
            "docId": "1203200110003774",
            "imageDesc": "Front b/w",
            "imageName": "Img_f_bw"
        }, {
            "clipExt": "pgv",
            "docId": "1203200110003774",
            "imageDesc": "Front gray",
            "imageName": "Img_f_gr"
        }]
      }
  };

  //var lista = (!json.links.lista[1]) ? json.links : json.links.lista;
  //alert(lista);

  $.each(json.links.lista, function(i, item) {
    var clipExt = item.clipExt;

    var fileLink = fileRestUrl + '?' +
        'un=' + item.docId + '&' +
        'ext=' + clipExt + '&' + clipExt + '=' + extractParam(params, clipExt);

    $('#sliding-navigation').append(
        "<li class=\"sliding-element\"><a href=\"#\" onclick=\"fetchImage('" + fileLink + "', this)\">" + item.imageDesc + "</a></li>");

  });
});

function extractParam(url, paramName) {
    var tmp = (url.match(RegExp("[?|&]" + paramName + '=(.+?)(&|$)')) || [null])[1];
    return tmp;    
}
4

2 に答える 2

2

与えられた「エラー」は誤解を招く可能性があります:)jqueryに「存在しない要素」を指定した場合、要素が必要な場合は、意味がありません...記述したコードのどこかに問題を見つけてください:do (document).ready()に登録した関数呼び出しがありますか?すべてのdom-nodeは実際のdom-nodeであり、null / undefinedではありませんか?

于 2013-02-08T23:21:14.907 に答える
1

このhtmlは、IE7モードがオンになっている場合にIE9で機能しますが、jafiddleでの例は同じモードで中断します。投稿したコードと同じですが、ローカルファイルに入れます。したがって、問題は他の場所にあるに違いありません。

このマークアップ(例と同じ)を使用してhtmlファイルを作成し、IE7で開きます。それは機能しますか?

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<div id="navigation-block" style="width: 154px; height: 100%;">
    <ul id="sliding-navigation">
        <li class="sliding-element">
             <h4>Dokumenti</h4>

        </li>
    </ul>
</div>
<script>
$(document).ready(function () {
    // the actual code I run is in comments
    // var baseRestUrl = top.location.protocol + '//' + top.location.host + top.location.pathname + 'jaxrs';
    var baseRestUrl = 'http//host:port/archive/jaxrs';
    var linksRestUrl = baseRestUrl + '/links';
    var fileRestUrl = baseRestUrl + '/file';
    // var params = top.location.search;
    var params = 'pnd=231352122&pgv=654321321321';

    // $.getJSON(linksUrl, function(json) {   //to get something like:
    var json = {
        "links": {
            "lista": [{
                "clipExt": "pnd",
                "docId": "1203200110003774",
                "imageDesc": "Front b/w",
                "imageName": "Img_f_bw"
            }, {
                "clipExt": "pgv",
                "docId": "1203200110003774",
                "imageDesc": "Front gray",
                "imageName": "Img_f_gr"
            }]
        }
    };

    //var lista = (!json.links.lista[1]) ? json.links : json.links.lista;
    //alert(lista);

    $.each(json.links.lista, function(i, item) {
        var clipExt = item.clipExt;

        var fileLink = fileRestUrl + '?' +
            'un=' + item.docId + '&' +
            'ext=' + clipExt + '&' + clipExt + '=' + extractParam(params, clipExt);

        $('#sliding-navigation').append(
            "<li class=\"sliding-element\"><a href=\"#\" onclick=\"fetchImage('" + fileLink + "', this)\">" + item.imageDesc + "</a></li>");

    });
});

function extractParam(url, paramName) {
    var tmp = (url.match(RegExp("[?|&]" + paramName + '=(.+?)(&|$)')) || [null])[1];
    return tmp;

}
</script>
</body>
</html>
于 2013-02-14T22:03:03.023 に答える