我正在使用jquery ui自动完成,并且从我进入ie7的bug中听起来像jquery 1.10.2或1.11.3都失败了ajax调用。
我想知道是否有人知道任何解决方法?
EDIT1
该代码适用于所有其他浏览器和IE10 + 我已经将问题追溯到jquery的以下部分。
for ( ; list && firingIndex < firingLength; firingIndex++ ) { if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { memory = false; // To prevent further calls using add break; } }
我的代码永远不会成功,它总是进入错误功能。我不知道为什么。我相信这是导致它的代码。
Edit2:这是我的代码。
<html>
<head>
<script src="jquery-ui-1.11.4/external/jquery-1.10.2/jquery-1.10.2.js"></script>
<!--<script src="//code.jquery.com/jquery-1.10.3.js"></script>-->
<script src="jquery-ui-1.11.4/jquery-ui.js"></script>
<script src="jquery.base64.js"></script>
<script src="jquery-ui-1.11.4/plugins/jquery.ui.autocomplete-html.js"></script>
<script src="PoolPartyAutoCompleteSetter.js"></script>
<link rel="stylesheet" href="jquery-ui-1.11.4/jquery-ui-modified.css">
<link rel="stylesheet" href="brik.css">
<!--Will be supplied by BRIK-->
<script>
function select(event, ui) {
$(this).val('')
alert(ui.item.mydata.uri)
return false
//alert(JSON.stringify(ui.item.mydata))
}
$(document).ready(function() {
set_autocomplete($, select, $("#search_topics"), "dc_subject")
});
</script>
</head>
<body>
<div>
<div id="topics">Topics
<input id="search_topics" class="submit-text" type="text"></input>
</div>
</div>
</body>
</html>
function set_autocomplete($, select, $input, field) {
switch (field) {
case "dc_contributor_author":
var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBAuthors";
break;
case "dc_subject":
var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBTopics";
break;
case "iadb_department":
var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBDepartments";
break;
case "dc_contributor_institution":
var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBInstitutions";
break;
case "dc_identifier_jel":
var scheme = "http://thesaurus.iadb.org/jelcodes/IdBJelCodes";
break;
default:
var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBCountries";
}
$input.autocomplete({
source: function(request, response) {
var hint = request.term;
$.ajax({
url: "http://thesaurus.iadb.org/extractor/api/suggest",
data: {
projectId: "1DCE4EC2-E3AB-0001-A09D-1BC01E70CE80",
language: "en",
searchString: request.term,
numberOfConcepts: 1000
},
dataType: 'json',
crossDomain: true,
beforeSend: function(req) {
if (!window.btoa) window.btoa = $.base64.btoa;
req.setRequestHeader('Authorization', 'Basic ' + btoa('xxxxx:xxxxx'));
},
/*xhrFields: {
withCredentials: true
},*/
error: function(jqXHR, textStatus, errorThrown) {
response(textStatus)
},
success: function(data) {
var datatable = Array();
for (i = 0; i < data.suggestedConcepts.length; i++) {
if (scheme == data.suggestedConcepts[i].conceptSchemes[0].uri) {
datatable.push({
label: hintHighlight(data.suggestedConcepts[i].prefLabel, hint),
value: data.suggestedConcepts[i].prefLabel,
mydata: data.suggestedConcepts[i]
})
}
}
response(datatable.slice(0, 13).sort(function(a, b) {
if (a.label.toLowerCase() == b.label.toLowerCase())
return 0;
if (a.label.toLowerCase() > b.label.toLowerCase())
return 1;
else
return -1
}));
}
})
},
minLength: 2,
select: select,
html: true,
open: function() {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function() {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
}).autocomplete("instance")._renderMenu = function(ul, items) { // Render different background for even and odd line of the menu
var that = this;
$.each(items, function(index, item) {
that._renderItemData(ul, item);
});
$(ul).find("li:odd").addClass("ac_odd");
}
}
function hintHighlight(sentence, hint) {
var reg = new RegExp(hint, "gi");
var matches = sentence.match(reg)
if (matches == null)
return sentence;
var highlighted = sentence;
for (var i = 0; i < matches.length; i++) {
highlighted = highlighted.replace(matches[i], "<strong class = \"ac_highlight\">" + matches[i] + "</strong>")
}
return highlighted;
}
EDIT3
我已将其跟踪到Jquery
中的以下代码// Get transport
transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
// If no transport, we auto-abort
if ( !transport ) {
done( -1, "No Transport" );
} else {
jqXHR.readyState = 1;
// Send global event
if ( fireGlobals ) {
globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
}
// Timeout
if ( s.async && s.timeout > 0 ) {
timeoutTimer = setTimeout(function() {
jqXHR.abort("timeout");
}, s.timeout );
}
传输始终未定义。 最好
答案 0 :(得分:1)
jQuery 1.x确实支持IE7。 jQuery UI 1.11.x不支持IE7。
以下是jQuery浏览器支持的链接:https://jquery.com/browser-support/。
根据该图表,jQuery 1.x适用于IE6 +,因此它适用于IE7。
以下是jQuery UI浏览器支持的链接:https://jqueryui.com/browser-support/
根据该图表,jQuery UI 1.11.x需要IE8或更高版本。
同一页面说明了旧浏览器:
虽然jQuery UI可能在旧版浏览器中运行时没有出现重大问题 版本,我们不主动测试jQuery UI,一般来说 不修复可能出现在其中的错误。
因此,您无法保证IE7中的jQuery UI支持。如果您希望我们帮助您准确诊断代码问题,您必须以某种方式包含导致问题的实际代码,以便我们可以运行它并查看是否可以找到解决方法。