我很难缩小这个范围。
在 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的一部分。
关于如何解决这个问题的任何想法?
编辑我: 当我在 IE9 中打开调试器时,在该行放置断点,然后打开堆栈跟踪,这就是我所看到的:
所以我假设它是由 $(document).ready 触发的
编辑二 似乎 jsfiddle 目前已关闭,所以我在这里发布代码并创建 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;
}