前端開發(fā)部分總結(jié)[兼容性、DOM操作、跨域等](持續(xù)更新)
更新時間:2010年03月04日 18:40:10 作者:
在公司做這個項目已經(jīng)6個多月了,總結(jié)一些問題,也算是拋磚引玉吧,希望更多的朋友一起分享一些技巧。
項目背景:.Net 3.5+MySQL+jQuery+WebService
在公司做這個項目已經(jīng)6個多月了,總結(jié)一些問題,也算是拋磚引玉吧,希望園子里更多的朋友一起分享一些技巧。
1、 WebService方法返回值不能為void。
當(dāng)WebService方法返回值為void時,F(xiàn)F和Chrome會持續(xù)等待,認為這個請求沒有結(jié)束,而在IE中一切是正常的。
2、當(dāng)input的type="button"時或者使用button時,點擊后會觸發(fā)form的submit。
當(dāng)時查找頁面刷新的問題找了很久,最后才發(fā)現(xiàn)是button會自動觸發(fā)form的submit,導(dǎo)致當(dāng)前頁面的刷新。
3、js設(shè)置document.domain只能從二級域名設(shè)置到頂級域名。
比如訪問moozi.cnblogs.com,可以在這個頁面中寫document.domain='cnblogs.com';如果把域設(shè)置為cnblogs.com之后,無法再使用document.domain='moozi.cnblogs.com';。
4、使用DOM片段創(chuàng)建iframe,當(dāng)跨域時,不能用js寫iframe的域。
比如你在moozi.cnblogs.com/test.html頁面用js把域設(shè)置為document.domain='cnblogs.com',而此時你再用var ifrm=createElement('iframe') ,這時將不能用js設(shè)置iframe的域也為'cnblogs.com',只能讓ifrm.src='test2.htm',并在test2.htm中設(shè)置域document.domain='cnblogs.com'。
5、當(dāng)你修改過當(dāng)前域的時候,CKEditor是正常的,而tinyMCE需要重新設(shè)置域。
CKEditor能自動識別當(dāng)前域,并不出錯。tinyMCE需要人為的設(shè)置。同時,如果你是用CKFinder上傳文件,而需要修改它的輸入代碼,不然會因為域不同而出現(xiàn)沒有權(quán)限的錯誤提示。
6、使用tinyMCE,盡管你的初始化代碼只有一句,但是可能出現(xiàn)多次初如化。發(fā)生原因未知,在不確定的情況下會出現(xiàn)此BUG。
7、開發(fā)js組件的時候,要時刻注意閉包和this的指代,這方面之前吃了不少虧。
8、將字符串轉(zhuǎn)換成jQuery對象時,要注意字符串html代碼的閉合標(biāo)簽。
比如:var html='<span>test</span> 'var jqEl=$(html);此時,jqEl會把html里的' '丟掉。
9、jQuery1.2.6和jQuery1.3在細節(jié)的處理上有一些區(qū)別。
jQuery1.2.6處理hasClass('.className')會出錯,而jQuery1.3不會。
10、盡量少用jQuery的each,多用js原生的代碼,性能較高。
在公司做這個項目已經(jīng)6個多月了,總結(jié)一些問題,也算是拋磚引玉吧,希望園子里更多的朋友一起分享一些技巧。
1、 WebService方法返回值不能為void。
當(dāng)WebService方法返回值為void時,F(xiàn)F和Chrome會持續(xù)等待,認為這個請求沒有結(jié)束,而在IE中一切是正常的。
2、當(dāng)input的type="button"時或者使用button時,點擊后會觸發(fā)form的submit。
當(dāng)時查找頁面刷新的問題找了很久,最后才發(fā)現(xiàn)是button會自動觸發(fā)form的submit,導(dǎo)致當(dāng)前頁面的刷新。
3、js設(shè)置document.domain只能從二級域名設(shè)置到頂級域名。
比如訪問moozi.cnblogs.com,可以在這個頁面中寫document.domain='cnblogs.com';如果把域設(shè)置為cnblogs.com之后,無法再使用document.domain='moozi.cnblogs.com';。
4、使用DOM片段創(chuàng)建iframe,當(dāng)跨域時,不能用js寫iframe的域。
比如你在moozi.cnblogs.com/test.html頁面用js把域設(shè)置為document.domain='cnblogs.com',而此時你再用var ifrm=createElement('iframe') ,這時將不能用js設(shè)置iframe的域也為'cnblogs.com',只能讓ifrm.src='test2.htm',并在test2.htm中設(shè)置域document.domain='cnblogs.com'。
5、當(dāng)你修改過當(dāng)前域的時候,CKEditor是正常的,而tinyMCE需要重新設(shè)置域。
CKEditor能自動識別當(dāng)前域,并不出錯。tinyMCE需要人為的設(shè)置。同時,如果你是用CKFinder上傳文件,而需要修改它的輸入代碼,不然會因為域不同而出現(xiàn)沒有權(quán)限的錯誤提示。
6、使用tinyMCE,盡管你的初始化代碼只有一句,但是可能出現(xiàn)多次初如化。發(fā)生原因未知,在不確定的情況下會出現(xiàn)此BUG。
7、開發(fā)js組件的時候,要時刻注意閉包和this的指代,這方面之前吃了不少虧。
8、將字符串轉(zhuǎn)換成jQuery對象時,要注意字符串html代碼的閉合標(biāo)簽。
比如:var html='<span>test</span> 'var jqEl=$(html);此時,jqEl會把html里的' '丟掉。
9、jQuery1.2.6和jQuery1.3在細節(jié)的處理上有一些區(qū)別。
jQuery1.2.6處理hasClass('.className')會出錯,而jQuery1.3不會。
10、盡量少用jQuery的each,多用js原生的代碼,性能較高。
您可能感興趣的文章:
- JavaScript call apply使用 JavaScript對象的方法綁定到DOM事件后this指向問題
- js學(xué)習(xí)總結(jié)之DOM2兼容處理重復(fù)問題的解決方法
- js學(xué)習(xí)總結(jié)之DOM2兼容處理順序問題的解決方法
- javascript 兼容所有瀏覽器的DOM擴展功能
- Dom操作之兼容技巧分享
- Dom與瀏覽器兼容性說明
- DOM Scripting中的圖片切換[兼容Firefox]
- javascript firefox兼容ie的dom方法腳本
- javascript下有關(guān)dom以及xml節(jié)點訪問兼容問題
- js學(xué)習(xí)總結(jié)之DOM2兼容處理this問題的解決方法
相關(guān)文章
jQuery實現(xiàn)批量判斷表單中文本框非空的方法(2種方法)
這篇文章主要介紹了jQuery實現(xiàn)批量判斷表單中文本框非空的方法,實例分析了2種實現(xiàn)判定非空的技巧,涉及jQuery頁面元素遍歷的相關(guān)技巧,需要的朋友可以參考下2015-12-12jquery ajax加載數(shù)據(jù)前臺渲染方式 不用for遍歷的方法
今天小編就為大家分享一篇jquery ajax加載數(shù)據(jù)前臺渲染方式 不用for遍歷的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08JQuery通過后臺獲取數(shù)據(jù)遍歷到前臺的方法
今天小編就為大家分享一篇JQuery通過后臺獲取數(shù)據(jù)遍歷到前臺的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08JS 遍歷 json 和 JQuery 遍歷json操作完整示例
這篇文章主要介紹了JS 遍歷 json 和 JQuery 遍歷json操作,結(jié)合完整實例形式詳細分析了JavaScript與jQuery遍歷json格式數(shù)據(jù)的簡單實現(xiàn)技巧,需要的朋友可以參考下2019-11-11jQuery制作input提示內(nèi)容(兼容IE8以上)
這篇文章主要為大家詳細介紹了jQuery制作input提示內(nèi)容,兼容IE8以上,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07jQuery插件expander實現(xiàn)圖片翻轉(zhuǎn)特效
本文給大家分享的是一款基于jQuery插件expander實現(xiàn)圖片翻轉(zhuǎn)特效,一共有6種不同的圖片翻轉(zhuǎn)樣式,十分的炫酷,有需要的小伙伴可以參考下。2015-05-05