jQuey與json.jar的衝突問題
剛剛在專案中解決了jQuery中的函式變數$衝突問題。在使用jQuery的下拉選單應用到實際專案中,又碰到了jQuery.js與json.js不相容的情況。
主要原因是:
jquery給object增加了很多元素,那麼在json.jar大概99行的位置
在Object.prototype.toJSONString = function ()方法中。
for (i in this) {
if(this.hasOwnProperty(i)){
報:物件不支援此屬性或方法。
目前的麻煩點是:系統是一個老專案。新增的一個頁面增加了JS庫jQuery.js。最好的方式是不採用jQuery,重寫新增功能的下拉選單。但是時間比較緊急,而json.jar卻是一個基礎JS。json.jar是不能刪除的。又沒時間重寫下拉選單的實現。採用了一種折中的方式處理此問題。暫時解決了js庫的衝突。增加異常判斷。忽略異常。
修改json.jar中的Object.prototype.toJSONString方法如下:
Object.prototype.toJSONString = function () {
var a = ['{'], b, i, v;
function p(s) {
if (b) {
a.push(',');
}
a.push(i.toJSONString(), ':', s);
b = true;
}
for (i in this) {
var b=false;
try{
b=this.hasOwnProperty(i);
}catch{
b=false;
}
if (b) {
v = this[i];
switch (typeof v) {
case 'undefined':
case 'function':
case 'unknown':
break;
case 'object':
if (v) {
if (typeof v.toJSONString === 'function') {
p(v.toJSONString());
}
} else {
p("null");
}
break;
default:
p(v.toJSONString());
}
}
}
a.push('}');
return a.join('');
};
教訓: 在不是很瞭解新的js庫之前,不要冒然使用。尤其是在老的專案中使用。另外:
再好不要採用prototype.js+json.js+jQuery.js組合的JS庫。相容問題很多。
相關文章
- VMware無法啟動/VMware和wsl衝突問題/VMware與Hyper-V衝突問題
- PtrClassicFrameLayout與viewpager橫向滑動衝突的問題Viewpager
- 如解決jquery與原生js衝突的問題jQueryJS
- 關於click事件與touch事件衝突的問題事件
- JAR衝突問題的解決JAR
- 使用反射的Factory Pattern與Singleton Pattern的衝突問題反射
- git 解決版本衝突問題Git
- wsl docker 和 ubuntu 衝突問題DockerUbuntu
- ivew表格中render函式與tooltip:true衝突問題函式
- GO 問題之多版本衝突解決Go
- 一個網路IP地址衝突的問題
- Maven中解決依賴衝突的問題Maven
- oracle客戶端同sap衝突的問題Oracle客戶端
- mapstruct結合lombok使用的衝突問題StructLombok
- 安裝MySQL 5.6.10包衝突問題MySql
- android NestedScrollView和ListView衝突問題AndroidView
- 如何解決jQuery的美元$符號衝突問題jQuery符號
- jquery如何解決版本之間衝突的問題jQuery
- oracle 序列值導致的主鍵衝突問題Oracle
- 小程式 input placeholder高度與input預設高度衝突問題
- Android-GridView與ScrollView共用的衝突問題(類似ListView)AndroidView
- SSIS 資料庫排序規則衝突問題資料庫排序
- Git Worktree:解決分支依賴衝突的問題Git
- Linux中的衝突問題及其應對策略(轉)Linux
- less中解決CSS3的calc衝突問題CSSS3
- onMeasure簡單方法 完美解決ListView與ScollView衝突問題!View
- jQuery.noConflict() 方法—— jquery庫與其他庫衝突的問題解決jQuery
- caffe框架和theano框架的所需cudnn的版本衝突問題框架DNN
- 解決echsop相容jquery(transport.js的衝突)的問題jQueryJS
- Android 解決BottomSheetDialog 拖曳衝突問題Android
- 解決gerrit commit後pull發生衝突的問題MIT
- 關於 OkHttp 依賴衝突問題的解決過程HTTP
- 解決app中多語音出現的衝突問題APP
- 利用觸發器解決更新主鍵衝突的問題觸發器
- js驗證時onblur與form的submit衝突問題(IE6/IE8)JSORMMIT
- google EventBus與spring注入的衝突GoSpring
- ScrollView巢狀RecyclerView滑動衝突相關問題View巢狀
- anaconda中python環境路徑衝突問題Python