雖然JavaScript很漂亮并且非常方便,但是如果彼此沖突,它們也可以影響網(wǎng)站。可以預(yù)料,隨著Joomla站點(diǎn)中安裝了越來越多的擴(kuò)展,JavaScript沖突將會(huì)出現(xiàn)。這些擴(kuò)展可能使用不同的JavaScript庫(kù)或不同的庫(kù)版本或由不同的開發(fā)人員制作的庫(kù),這些庫(kù)可能彼此沖突。

是什么導(dǎo)致JavaScript沖突?
Mootools庫(kù)和jQuery庫(kù)的不同版本會(huì)造成很多JavaScript沖突。如果您使用相同的庫(kù)版本,但使用不同開發(fā)人員開發(fā)的庫(kù)(例如jQuery和Mootools沖突),則會(huì)發(fā)生JavaScript沖突。

這是一個(gè)案例研究:
- 模板A加載Mootools庫(kù)1.5.0版
- 插件B加載自己的Mootools庫(kù)1.2.6版
- 模塊C加載jQuery庫(kù)1.11版
- 組件D加載jQuery庫(kù)2.1.1版本
JavaScript沖突的另一個(gè)原因是瀏覽器,某些非標(biāo)準(zhǔn)瀏覽器會(huì)處理JavaScript,并且瀏覽器的JavaScript與從您的站點(diǎn)加載的JavaScript發(fā)生沖突。
如何檢測(cè)JavaScript沖突?
因此,當(dāng)您的網(wǎng)站無法正常運(yùn)行時(shí),應(yīng)排除沖突。但是,如何檢查和查找JavaScript沖突?ANSWER正在檢查JavaScript控制臺(tái)。有多種基于瀏覽器的方法。例如,在Firefox和Chrome中,可用的工具是Firebug,Web Developer工具欄,Debugger,Error Console等。
如果您的網(wǎng)站出現(xiàn)JavaScript錯(cuò)誤,則該工具會(huì)向您提供錯(cuò)誤消息,以幫助您找出問題所在,并在導(dǎo)致該問題的網(wǎng)站擴(kuò)展名/功能中歸零。該錯(cuò)誤消息還會(huì)使您獲得沖突文件的名稱。

您可以通過檢查導(dǎo)致問題的擴(kuò)展程序來檢測(cè)問題,步驟如下:
切換到默認(rèn)的Joomla模板并禁用已安裝的擴(kuò)展程序,然后重新加載您的網(wǎng)站并檢查JavaScript錯(cuò)誤是否仍然存在。
逐一發(fā)布已安裝的擴(kuò)展程序,然后重新加載您的網(wǎng)站。重復(fù)該過程,直到發(fā)現(xiàn)哪些部分存在沖突。

如何解決JavaScript沖突?
沒有解決JavaScript沖突的通用步驟,因?yàn)镴avaScript沖突因情況而異,并且最好由開發(fā)人員解決。但是您可以嘗試以下幾種方法:
將jQuerry置于無沖突模式
jQuery庫(kù)及其所有插件都包含在jQuery名稱空間中。順便說一下,全局對(duì)象存儲(chǔ)在jQuery命名空間中,因此,您不應(yīng)在jQuery與其他任何庫(kù)(例如prototype.js,MooTools)之間發(fā)生沖突。
在將jQuery加載到頁(yè)面上之后以及嘗試在頁(yè)面中使用jQuery之前,立即將jQuery置于無沖突模式。
<!-將jQuery置于無沖突模式的另一種方法。-> <script src =“ / prototype.js”> </ script> <script src =“ / jquery.js”> </ script> <腳本> jQuery.noConflict(); jQuery(document).ready(function($){ //您可以在此處使用本地范圍的$作為jQuery的別名。 $(“ div”).hide(); }); //全局范圍中的$變量具有prototype.js的含義。 window.onload = function(){ var mainDiv = $(“ main”); } </ script>





