我正在開發一個必須在本地工作的HTML5 Web應用程序。允許從Internet Explorer9訪問本地存儲的XML
是一個設計數據模型的應用程序,它應該解析來自XML格式良好的文件的表格信息並將它們呈現在html中。我想創建自定義視圖,告訴腳本從XML中通過URL中的GET參數傳遞他們的名字來解析表。
爲此,我使用jQUery的$.ajax
方法,我在Firefox中開發它,一切都很順利。 但我需要它在IE9上工作,並使用$ .ajax和XMLHttpRequest我收到「訪問被拒絕」錯誤。
這裏腳本工作在Firefox:
$(document).ready(function() {
// // rilevo la stringa dell'URL che contiene i nomi delle tabelle da visualizzare
var query = window.location.search.substring(1);
// se c'è
if (query){
// alert('query= '+query);
var tabelle = query.split('&');
// alert('lunghezza array tabelle= '+tabelle.length);
$.ajax({
type: "GET",
url: "tables.xml",
dataType: "xml",
async: false,
success: function(xml) {
alert('start loading tables');
// var i_success = 0;
for(var i_success=0; i_success<tabelle.length; i_success++){
$(xml).find('tabella').each(function(){
// alert('pars+write tabella '+i_success+': id= '+tabelle[i_success]);
if ($(this).find('id').text() == tabelle[i_success]) {
var id = $(this).find('id').text();
// //verifico che la tabella sia tra quelle passatemi nell'URL
// var found = $.inArray(id, tabelle) > -1;
var classe = $(this).attr('classe');
var title = $(this).find('title').text();
$('<div class="drag tab" id="'+id+'"></div>').html('<h2 class="th">'+title+'</h2>').appendTo('#content');
var i_celle = 0;
$(this).find('cella').each(function() {
var id_cella = $(this).find('id_cella').text();
var content = $(this).find('content').text();
$('<div class="td '+id_cella+'">'+content+'</div>').appendTo('#'+id);
i_celle++;
});
// continue;
} else {
return;
}
});// end find each
} //end for
},//end success
complete: function(){
toggleFields();
connections();
toggleBg();
alert('complete');
},//end complete
error: function(richiesta,stato,errori){
$("#content").html("<strong>Caricamento delle tabelle fallito:</strong><br/>"+stato+" "+errori);
}//end error
}); //end ajax
} else {
alert('Non sono state fornite tabelle da visualizzare...');
}
});`
在這裏,我想實現對IE的代碼:
$(document).ready(function() {
// // rilevo la stringa dell'URL che contiene i nomi delle tabelle da visualizzare
var query = window.location.search.substring(1);
// se c'è
if (query){
alert('query= '+query);
var tabelle = query.split('&');
alert('lunghezza array tabelle= '+tabelle.length);
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
alert('Questo browser supporta XMLHttpRequest! :)');
xmlhttp=new XMLHttpRequest();
alert('XMLHttpRequest creata con successo');
xmlhttp.open("GET","tables.xml",true);
alert('richiesta aperta');
xmlhttp.send();
alert('Request inviata con successo');
} else {// code for IE6, IE5
alert('XMLHttpRequest non supportata da questo browser');
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
alert('Non sono state fornite tabelle da visualizzare...');
}// end if query
}); // end document.ready
誰能幫助我嗎?我越來越瘋狂..
使用jQuery的好處之一是,您不必做任何特殊的事情就可以讓代碼在多個瀏覽器上運行。你不應該需要你所謂的IE代碼。運行在FF shoudl上的代碼適用於所有瀏覽器。如果它不存在,那麼您可以修復一個小錯誤,然後它將在所有瀏覽器上運行。 – RiggsFolly
哦,是的,我知道。 jQuery做了很多控制,並確保了我的降級。 – marzolinus
哦,是的,我知道。 jQuery做了很多控制,並確保了我的降級。 但我知道這個問題,這就是爲什麼我要重新編碼:IE阻止XMLHttprequest本地文件。 Firefox不。而且Chrome會阻止該塊,但是如果您通過命令行中的'--disable-web-security'選項來調用它,則允許本地文件訪問。 – marzolinus