jquery-vs-mootoolsDocela dlouho jsem se plácal v kruhu, když jsem pro Wordpress šablonu využívající Mootools nainstaloval pluginy které používají jQuery. Vše se různě zasekávalo, něco nefungovalo. Třeba slider posledních novinek přestal od určitého updatu pluginů v šabloně WP úplně fungovat.

jQuery a Mootools dohromady

Po chvíli hledání (pár hodin) jsem zjistil, že jde o konflikt dvou Javascriptových frameworků. Bohužel JQuery a Mootools používají podobným způsobem adresní prostor. Takže se navzájem přetloukají. Možná řešení jako předělat vše do jednoho frameworku dost dobře nebyla realizovatelná. Buď bych musel předělat kompletní javascripty šablony, které si navíc tvůrce pěkně zakódoval, tudy cesta nevedla. Nebo bych musel přeprogramovat pluginy používající jQuery, neaktualizovat je nebo je prostě povypínat. Tudy cesta taky nevedla, protože šlo o pluginy typu Google Analytics, NextGen gallery apod., tedy pluginy celkem zásadní.

řešením je jQuery zapnout se do nekonfliktního módu. Chvilku to trvalo, protože na několika stránkách co jsem našel byl návod špatně. Uvádělo se umístění kódu před Mootools, jinde za něj, nebo před načtením všeho apod. Zachránil mě až článek na Working together with jQuery and MooTools odkazující přímo na stránky vývojářů jQuery Using jQuery with Other Libraries. Zde jsem se konečně jasně dozvěděl to správné a fungující umístění kódu, které má být až za všemi naštěnými javascriptovými knihovnami. Správné řešení tedy bylo umístit do header.php tento kus kódu:

  // horní část  souboru, včetně <?php wp_head(); ?>, který může nějaké js vložit přes include
  <script type="text/javascript">
      jQuery.noConflict();
   </script>

 </head>

Díky zavolání jQuery.noConflict(); těsně před uzavřením head se zapne jQuery do správného kompatibilního režimu.

 

Přidat komentář


Bezpečnostní kód
Obnovit