var waitid = typeof waitid == 'undefined' || waitid === null ? showid : (waitid !== '' ? waitid : '');
var showidclass = !showidclass ? '' : showidclass;
var ajaxframeid = 'ajaxframe';
var ajaxframe = $(ajaxframeid);
var formtarget = $(formid).target;
var handleResult = function() {
alert('handleResult');
var s = '';
var evaled = false;
showloading('none');
try {
if(BROWSER.ie) {
s = $(ajaxframeid).contentWindow.document.XMLDocument.text;
} else {
if(BROWSER.safari > 0) {
s = $(ajaxframeid).contentWindow.document.documentElement.firstChild.wholeText;
} else {
s = $(ajaxframeid).contentWindow.document.documentElement.firstChild.nodeValue;
}
}
} catch(e) {s
s = '內部錯誤,無法顯示此內容';
}
if(s != '' && s.indexOf('ajaxerror') != -1) {
evalscript(s);
evaled = true;
}
if(showidclass) {
$(showid).className = showidclass;
}
if(submitbtn) {
submitbtn.disabled = false;
}
if(!evaled && (typeof ajaxerror == 'undefined' || !ajaxerror)) {
ajaxinnerhtml($(showid), s);
}
ajaxerror = null;
if($(formid)) $(formid).target = formtarget;
if(typeof recall == 'function') {
recall();
} else {
eval(recall);
}
if(!evaled) evalscript(s);
ajaxframe.loading = 0;
$('append_parent').removeChild(ajaxframe);
};
if(!ajaxframe) {
if (BROWSER.ie) {
ajaxframe = document.createElement('<iframe name="' + ajaxframeid + '" id="' + ajaxframeid + '"></iframe>');
} else {
ajaxframe = document.createElement('iframe');
ajaxframe.name = ajaxframeid;
ajaxframe.id = ajaxframeid;
}
ajaxframe.style.display = 'block';
ajaxframe.loading = 1;
$('append_parent').appendChild(ajaxframe);
} else if(ajaxframe.loading) {
return false;
}
_attachEvent(ajaxframe, 'load', handleResult);
showloading();
$(formid).target = ajaxframeid;
$(formid).action += '&inajax=1';
$(formid).submit();
if(submitbtn) {
submitbtn.disabled = true;
}
for($i=0;$i<100;$i++)
{
alert($i);
}
doane();
return false;
設置了彈出100次和load事件結束後,哪個先執行的?
驗證: 在上述代碼採用了手動提交的方式,當 iframe load 時間直接調用handleResult函數。
若代碼去掉 $(formid).submit(); 然後把 1_1_member_login.tpl.php中的form 提交οnsubmit="return false"改爲return true;
1-猜想:先執行完100次alert($i)在執行handleResult; 原因是 執行onsubmit()->ajaxpost()函數後再提交。 出錯
2-驗證:失敗 ,與猜想不符。 與上次出現效果相同 沒有在ajaxpost執行後才提交
1-1猜想:common.js沒有更新
2-2驗證:更改瀏覽器chrome後得到想要的結果
出現如上問題 與 新建立的iframe有關係
chrome與firfox概念不一樣,上述代碼firfox調用兩次handleResult函數,chrome一次。
function handle(){
//document.write('aaa');
alert('handle');
}
var e = document.getElementById('iframeName');
_attachEvent(e, 'load', handle);
$(formid).target = "iframe1";
$(formid).submit();
for(i=0;i<100;i++){
alert(i);
}
return false;
驗證:無論是chrome還是firefox都是在執行完ajaxpost 全部語句再提交,$(formid).submit();