Kode berikut dijalankan dan dilewati di bawah IE8, dan kesalahan terjadi di IE9: Salin kode sebagai berikut:
Document.createElement ('<iframe id = "yige-org-iframe" src = "yige.org.logo.gif" style = "posisi: absolute; atas: 0; kiri: 0; lebar: 1px; tinggi: 1px; visibilitas: tersembunyi;"> </iframe>');
Prompt Kesalahan: Pengecualian: Script5022: DOM Pengecualian: Invalid_character_err (5)
Analisis Ide:
Langkah 1: Kompatibel dengan IE9, Firefox, Opera, Safari dan browser lainnya;
Salinan kode adalah sebagai berikut: var iframe = document.createElement ("iframe");
iframe.setAttribute ("id", "yui-history-iframe");
iframe.setAttribute ("src", "../../images/defaults/transparent-pixel.gif");
iframe.setAttribute ("gaya", "posisi: absolute; atas: 0; kiri: 0; lebar: 1px; tinggi: 1px; visibilitas: tersembunyi;");
Langkah 2: Kompatibel dengan IE6-8: karena IE6-8 tidak dapat memodifikasi atribut nama iframe
Salinan kode adalah sebagai berikut:
var oframe = isie? document.createElement ("<iframe name =/" " + this._frameName +"/">"): document.createelement ("iframe");
ofRame.name = "iframname";
Solusi Komprehensif:
Salinan kode adalah sebagai berikut:
var isie = (document.all)? Benar: false; // Ini hanya penilaian sederhana tentang apakah itu IE. Untuk penilaian browser terperinci: silakan merujuk ke deteksi jenis browser
var ua = navigator.useragent.tolowercase (). match (/msie ([/d.] +)/) [1];
if (ua == "9.0") {
isie = false;
}
var oframe = isie? document.createElement ("<iframe name = /" " + this._frameName +" / ">"): document.createElement ("iframe"); oframe.name = "iframename";
// ================================================================= ===================================================================
Fungsi Ajaxpost (Formid, ShowID, WaitID, ShowidClass, SubmitBtn, Recall) {
var waitid = typeof waitId == 'tidak terdefinisi' || WaitID === NULL? showid: (waitid! == ''? waitid: '');
var showidclass =! showidclass? '': showidclass;
var ajaxframeId = 'AjaxFrame';
var ajaxframe = $ (ajaxframeId);
var formTarget = $ (formId) .target;
var handleresult = function () {
var s = '';
var evaluasi = false;
showloading ('none');
mencoba {
s = $ (ajaxframeId) .contentWindow.document.xmldocument.text;
} catch (e) {
mencoba {
s = $ (ajaxframeId) .contentWindow.document.documentelement.firstchild.wholetext;
} catch (e) {
mencoba {
s = $ (ajaxframeId) .contentWindow.document.documentelement.firstchild.nodevalue;
} catch (e) {
s = 'kesalahan internal, tidak dapat menampilkan konten ini';
}
}
}
if (s! = '' && s.indexof ('ajaxerror')! = -1) {
evalscript (s);
dievaluasi = true;
}
if (showidclass) {
$ (showid) .className = showIdclass;
if (submitbtn) {
SubtitedBtn.Disabled = false;
}
}
if (! Evaled && (typeOf AjaxError == 'tidak terdefinisi' ||! AjaxError)) {
Ajaxinnerhtml ($ (showid), s);
}
Ajaxerror = null;
if ($ (formid)) $ (formid) .target = FormTarget;
if (typeOf recall == 'function') {
mengingat();
} kalau tidak {
Eval (Recall);
}
if (! evaled) evalscript (s);
AjaxFrame.Loading = 0;
$ ('append_parent'). Removechild (Ajaxframe);
};
if (! Ajaxframe) {
mencoba {
AjaxFrame = document.createElement ('<iframe name = "' + AjaxFrameId + '" id = "' + AjaxFrameId + '"> </iframe>');
} catch (e) {
AjaxFrame = document.createElement ('iframe');
AjaxFrame.name = AjaxFrameId;
Ajaxframe.id = AjaxFrameId;
}
jaxframe.style.display = 'none';
AjaxFrame.Loading = 1;
$ ('append_parent'). AppendChild (Ajaxframe);
} lain if (ajaxframe.loading) {
mengembalikan false;
}
_AttachEvent (Ajaxframe, 'Load', Handleresult);
showloading ();
$ (FORMID) .Target = AjaxFrameId;
$ (formid) .action += '& inajax = 1';
$ (formid) .submit ();
mengembalikan false;
}