Javascript conflict در جوملا: تفاوت بین نسخه‌ها   

از دانشنامه جوملا فارسی - مامبو فارسی
پرش به: ناوبری، جستجو
(صفحه‌ای تازه حاوی «این یک حقیقت است که [http://www.joomlafarsi.com جوملا] فرآیند راه اندازی یک وب سایت را ت...» ایجاد کرد)
 
 
سطر ۱: سطر ۱:
این یک حقیقت است که [http://www.joomlafarsi.com جوملا] فرآیند راه اندازی یک [[وب]] سایت را تسهیل کرده و به همان اندازه که اجرای یک پروژه [[وب]] سایت توسط [[جوملا]] لذت بخش است بروز یک اختلال در کتابخانه ها [[JavaScript]] میتواند کارکرد [[وب]] سایت را مختل کند و لذت پیاده سازی یک پروژه [[وب]] سایت را به کام شما تلخ کند (توجه داشته باشید که این موضوع برای تمام سیستم های مدیریت محتوا ممکن است پیش بیاید و هیچ ارتباطی به [[جوملا]] ندارد).
+
این یک حقیقت است که [http://www.joomlafarsi.com جوملا] فرآیند راه اندازی یک [[وب]] سایت را تسهیل کرده و به همان اندازه که اجرای یک پروژه [[وب]] سایت توسط [[جوملا]] لذت بخش است بروز یک اختلال در کتابخانه‌ها [[JavaScript]] می‌تواند کارکرد [[وب]] سایت را مختل کند و لذت پیاده سازی یک پروژه [[وب]] سایت را به کام شما تلخ کند (توجه داشته باشید که این موضوع برای تمام سیستم‌های مدیریت محتوا ممکن است پیش بیاید و هیچ ارتباطی به [[جوملا]] ندارد).
<br/>
+
 
یکی دیگر از قابلیت هایی که [[جوملا]] در اخیتار ما قرار میدهد امکان نصب و استفاده از [http://extensions.joomlafarsi.com افزونه] های متعدد است که این افزونه ها ممکن است از کتابخانه های [[JavaScript]] مختلف مانند Jquery , Mootools  و ... استفاده کنند این کتابخانه ها توسط توسعه دهندگان مختلف با سلایق مختلف ایجاد شده و ممکن است از هرکدام از کتابخانه هایی که به آن اشاره کردیم به اشکال گوناگون و در نسخه های متفاوت استفاده شوند لذا بروز پدده [[JavaScript]] Conflict بسیار بدیهی به نظر می رسد اما در این مقاله سعی داریم تاحد ممکن از بروز [[JavaScript]] Conflict در سایت های [[جوملا]]یی جلوگیری کنیم.
+
یکی دیگر از قابلیت‌هایی که [[جوملا]] در اخیتار ما قرار می‌دهد امکان نصب و استفاده از [http://extensions.joomlafarsi.com افزونه]‌های متعدد است که این افزونه‌ها ممکن است از کتابخانه‌های [[JavaScript]] مختلف مانند Jquery , Mootools  و ... استفاده کنند این کتابخانه‌ها توسط توسعه دهندگان مختلف با سلایق مختلف ایجاد شده و ممکن است از هر کدام از کتابخانه‌هایی که به آن اشاره کردیم به اشکال گوناگون و در نسخه‌های متفاوت استفاده شوند لذا بروز پدیده [[JavaScript]] Conflict بسیار بدیهی به نظر می‌رسد اما در این مقاله سعی داریم تاحد ممکن از بروز [[JavaScript]] Conflict در سایت‌های [[جوملا]]یی جلوگیری کنیم.
 +
 
 +
 
 
[[پرونده:Joomla-tutorials.png  |center|frame ]]
 
[[پرونده:Joomla-tutorials.png  |center|frame ]]
 +
 +
 
=بررسی عوامل بروز JavaScript Conflict =
 
=بررسی عوامل بروز JavaScript Conflict =
استفاده از نسخه های متفاوت کتابخانه '''Mootools''' و کتابخانه '''Jquery''' در یک [[وب]] سایت میتواند اختلالات زیادی ایجاد کند. حتی زمانیکه شما از چند کتابخانه هم نوع با یک نسخه مشترک که توسط توسعه دهندگان متفاوتی ایجاد شده اند در یک [[وب]] سایت استفاده میکنید امکان بروز  [[JavaScript]] Conflict وجود خواهد داشت.
+
 
 +
استفاده از نسخه‌های متفاوت کتابخانه '''Mootools''' و کتابخانه '''Jquery''' در یک [[وب]] سایت می‌تواند اختلالات زیادی ایجاد کند.
 +
حتی زمانیکه شما از چند کتابخانه هم نوع با یک نسخه مشترک که توسط توسعه دهندگان متفاوتی ایجاد شده‌اند در یک [[وب]] سایت استفاده می‌کنید امکان بروز  [[JavaScript]] Conflict وجود خواهد داشت.
 +
 
 +
 
 
[[پرونده:Javascript-conflict.png  |center|frame ]]
 
[[پرونده:Javascript-conflict.png  |center|frame ]]
 +
 +
 
=نحوه تشخیص JavaScript Conflict=
 
=نحوه تشخیص JavaScript Conflict=
هنگامیکه [[وب]] سایت شما آنطور که انتظار دارید کار نمیکند, یعنی یک اختلال در یک جا بروز کرده (دلیل هر اختلال لزوما [[JavaScript]] Conflict  نیست ما در این مقاله فقط [[JavaScript]] Conflict بررسی میکنیم.) حال چگونه باید بررسی کنیم که این اختلال [[JavaScript]] Conflict است و اینکه در کجای برنامه این مشکل پدید آمده است. افزونه [http://docs.joomlafarsi.com/index.php?title=%D9%87%D9%85%D9%87_%DA%86%DB%8C%D8%B2_%D8%AF%D8%B1%D9%85%D9%88%D8%B1%D8%AF_Firebug FireBug] این مشکل را حل کرده است در رابطه با '''FireBug''' باید خدمتتان عرض کنم که نسخه مربوط اکثر [[مرورگر]]های firebug در دسترس است. از طریق قسمت '''console''' در فایرباگ میتوانیم مشکل [[JavaScript]] Conflict را بررسی کنیم.
+
 
<br/>
+
هنگامیکه [[وب]] سایت شما آنطور که انتظار دارید کار نمی‌کند، یعنی یک اختلال در یک جا بروز کرده (دلیل هر اختلال لزوما [[JavaScript]] Conflict  نیست. ما در این مقاله فقط [[JavaScript]] Conflict بررسی می‌کنیم.)
اگر [[وب]] سایت شما دراری خطای [[JavaScript]] ای باشد این ابزار ضمن ارائه برخی جزییات دقیقا آن خطا را به شما نمایش میدهد بوسیله این ابزار میتوان نام فایل و حتی شماره خطی که باعث بروز [[JavaScript]] Conflict شده است را پیدا کنیم.
+
 
 +
حال چگونه باید بررسی کنیم که این اختلال [[JavaScript]] Conflict است و اینکه در کجای برنامه این مشکل پدید آمده است. افزونه [http://docs.joomlafarsi.com/index.php?title=%D9%87%D9%85%D9%87_%DA%86%DB%8C%D8%B2_%D8%AF%D8%B1%D9%85%D9%88%D8%B1%D8%AF_Firebug FireBug] این مشکل را حل کرده است در رابطه با '''FireBug''' باید خدمتتان عرض کنم که نسخه مربوط اکثر [[مرورگر]]های firebug در دسترس است. از طریق قسمت '''console''' در فایرباگ میتوانیم مشکل [[JavaScript]] Conflict را بررسی کنیم.
 +
 
 +
اگر [[وب]] سایت شما دارای خطای [[JavaScript]]‌ای باشد این ابزار ضمن ارائه برخی جزئیات دقیقا آن خطا را به شما نمایش می‌دهد بوسیله این ابزار می‌توان نام فایل و حتی شماره خطی که باعث بروز [[JavaScript]] Conflict شده است را پیدا کنیم.
 +
 
 +
 
 
[[پرونده:Js-conflict.png  |center|frame ]]
 
[[پرونده:Js-conflict.png  |center|frame ]]
همانطور که در تصویر بالا مشخص شده شما میتوانید فایل مربوط به افزونه ای که باعث بروز اختلال در سایت تان شده است را تشخیص دهید. اگر استفاده از firebug و جزئیات ارائه توسط آن برای شما قابل استفاده نبود باید مراحل زیر را به ترتیب انجام دهید. این روشی است که قبل فراگیر شدن فایرباگ مرسوم بوده.  
+
 
<br/>
+
 
- پس از رویت پیغام خطا باید قالب فعال سایت تان به قالب پیش فرض [[جوملا]] تنظیم کنید. سپس بررسی کنید ببینید بازهم پیغام خطا پابرجاست یا خیر؟ <br/>
+
همانطور که در تصویر بالا مشخص شده شما می‌توانید فایل مربوط به افزونه‌ای که باعث بروز اختلال در سایتتان شده است را تشخیص دهید. اگر استفاده از firebug و جزئیات ارائه توسط آن برای شما قابل استفاده نبود باید مراحل زیر را به ترتیب انجام دهید. این روشی است که قبل فراگیر شدن فایرباگ مرسوم بوده است.  
- اگر خطا همچنان وجود داشت باید کلیه افزونه هایی که خودتان در سایت نصب کردید را غیرفعال کنید تک تک اقدام به فعال کردن آن کنید و در هر مرحله چک کنید ببینید پیغام خطا وجود دارد یا خیر.
+
 
 +
*پس از رویت پیغام خطا باید قالب فعال سایت تان به قالب پیش فرض [[جوملا]] تنظیم کنید. سپس بررسی کنید بازهم پیغام خطا پابرجاست یا خیر؟
 +
*اگر خطا همچنان وجود داشت باید کلیه افزونه‌هایی که خودتان در سایت نصب کردید را غیرفعال کنید تک تک اقدام به فعال کردن آن کنید و در هر مرحله چک کنید پیغام خطا وجود دارد یا خیر.
 +
 
 
=چگونه JavaScript Conflict را برطرف کنیم ؟=
 
=چگونه JavaScript Conflict را برطرف کنیم ؟=
از آنجایی علل بروز خطاهای [[جاوا اسکریپت]] می تواند مختلف باشد هیچ راه حل مشخصی برای حل یکباره کلیه پیغام های خطا نمی توان ارائه کرد اما برای مشکل [[JavaScript]] Conflict یک راه حل وجود دارد که به ما کمک میکند تا با انجام آن روند اجرای سایت را مجددا فعال کنیم و(اصطلاحا سایت بالا بیاوریم) تا مشکل را ریشه ای حل کنیم.  
+
 
<br/>
+
از آنجایی که علل بروز خطاهای [[جاوا اسکریپت]] می‌تواند مختلف باشد هیچ راه حل مشخصی برای حل یکباره کلیه پیغام‌های خطا نمی‌توان ارائه کرد اما برای مشکل [[JavaScript]] Conflict یک راه حل وجود دارد که به ما کمک می‌کند تا با انجام آن روند اجرای سایت را مجددا فعال کنیم و(اصطلاحا سایت را بالا بیاوریم) تا مشکل را ریشه‌ای حل کنیم.  
 +
 
 
'''به این منظور باید از حالت JQuery noConflict استفاده کنیم. '''
 
'''به این منظور باید از حالت JQuery noConflict استفاده کنیم. '''
<br/>
+
 
تمام [[پلاگین]] ها و کتابخانه های موجود در Jquery از namespace جی کوئری (JQuery) استفاده میکنند و تمام آبجکت های global در JQuery namespace ذخیره می شوند و این موضوع باعث ایجاد اختلال بین کتابخانه JQuery و سایر کتابخانه ها مانند prototype.js و MooToolsو ... میشود یکی از راههای اجتناب از این اختلال استفاده از حالت JQueryNoConflict است به این شکل که در صفحه بلافاصله قبل از لود شدن سایر توابع و قبل از اینکه از JQuery در صفحه تان استفاده کنید باید این حالت را تعریف کنید.
+
تمام [[پلاگین]]‌ها و کتابخانه‌های موجود در Jquery از namespace جی کوئری (JQuery) استفاده می‌کنند و تمام آبجکت‌های global در JQuery namespace ذخیره می‌شوند و این موضوع باعث ایجاد اختلال بین کتابخانه JQuery و سایر کتابخانه‌ها مانند prototype.js و MooTools و ... می‌شود یکی از راه‌های اجتناب از این اختلال استفاده از حالت JQueryNoConflict است به این شکل که در صفحه بلافاصله قبل از لود شدن سایر توابع و قبل از اینکه از JQuery در صفحه تان استفاده کنید باید این حالت را تعریف کنید.
 +
 
 +
 
 
<source lang="php" >
 
<source lang="php" >
 
<script src="/prototype.js"></script>
 
<script src="/prototype.js"></script>
سطر ۴۰: سطر ۶۱:
 
</script>
 
</script>
 
</source>
 
</source>
در حقیقت از JQuery و $ به صورت لوکال استفاده میکنید تا از بروز تداخل جلوگیری به عمل آورید. این کد را می توانید در افزونه ای که باعث ایجاد تداخل می شود استفاده کنید به نحویکه در ابتدا این فایل js اجرا شود . به عنوان مثال اگر قالبی که استفاده میکنید [[JavaScript]] Conflict دارد کد بالا را باید در تگ head فایل Index.php قالب تان استفاده نمایید.
+
 
 +
 
 +
در حقیقت از JQuery و $ به صورت لوکال استفاده می‌کنید تا از بروز تداخل جلوگیری به عمل آورید. این کد را می‌توانید در افزونه‌ای که باعث ایجاد تداخل می‌شود استفاده کنید به نحویکه در ابتدا این فایل js اجرا شود. به عنوان مثال اگر قالبی که استفاده می‌کنید [[JavaScript]] Conflict دارد کد بالا را باید در تگ head فایل Index.php قالب تان استفاده نمایید.
 +
 
 +
 
 +
<headertabs />
 +
 
 
----
 
----
  

نسخهٔ کنونی تا ‏۱۹ ژوئن ۲۰۱۵، ساعت ۱۴:۵۴

این یک حقیقت است که جوملا فرآیند راه اندازی یک وب سایت را تسهیل کرده و به همان اندازه که اجرای یک پروژه وب سایت توسط جوملا لذت بخش است بروز یک اختلال در کتابخانه‌ها JavaScript می‌تواند کارکرد وب سایت را مختل کند و لذت پیاده سازی یک پروژه وب سایت را به کام شما تلخ کند (توجه داشته باشید که این موضوع برای تمام سیستم‌های مدیریت محتوا ممکن است پیش بیاید و هیچ ارتباطی به جوملا ندارد).

یکی دیگر از قابلیت‌هایی که جوملا در اخیتار ما قرار می‌دهد امکان نصب و استفاده از افزونه‌های متعدد است که این افزونه‌ها ممکن است از کتابخانه‌های JavaScript مختلف مانند Jquery , Mootools و ... استفاده کنند این کتابخانه‌ها توسط توسعه دهندگان مختلف با سلایق مختلف ایجاد شده و ممکن است از هر کدام از کتابخانه‌هایی که به آن اشاره کردیم به اشکال گوناگون و در نسخه‌های متفاوت استفاده شوند لذا بروز پدیده JavaScript Conflict بسیار بدیهی به نظر می‌رسد اما در این مقاله سعی داریم تاحد ممکن از بروز JavaScript Conflict در سایت‌های جوملایی جلوگیری کنیم.


Joomla-tutorials.png


[ویرایش]

استفاده از نسخه‌های متفاوت کتابخانه Mootools و کتابخانه Jquery در یک وب سایت می‌تواند اختلالات زیادی ایجاد کند. حتی زمانیکه شما از چند کتابخانه هم نوع با یک نسخه مشترک که توسط توسعه دهندگان متفاوتی ایجاد شده‌اند در یک وب سایت استفاده می‌کنید امکان بروز JavaScript Conflict وجود خواهد داشت.


Javascript-conflict.png


هنگامیکه وب سایت شما آنطور که انتظار دارید کار نمی‌کند، یعنی یک اختلال در یک جا بروز کرده (دلیل هر اختلال لزوما JavaScript Conflict نیست. ما در این مقاله فقط JavaScript Conflict بررسی می‌کنیم.)

حال چگونه باید بررسی کنیم که این اختلال JavaScript Conflict است و اینکه در کجای برنامه این مشکل پدید آمده است. افزونه FireBug این مشکل را حل کرده است در رابطه با FireBug باید خدمتتان عرض کنم که نسخه مربوط اکثر مرورگرهای firebug در دسترس است. از طریق قسمت console در فایرباگ میتوانیم مشکل JavaScript Conflict را بررسی کنیم.

اگر وب سایت شما دارای خطای JavaScript‌ای باشد این ابزار ضمن ارائه برخی جزئیات دقیقا آن خطا را به شما نمایش می‌دهد بوسیله این ابزار می‌توان نام فایل و حتی شماره خطی که باعث بروز JavaScript Conflict شده است را پیدا کنیم.


Js-conflict.png


همانطور که در تصویر بالا مشخص شده شما می‌توانید فایل مربوط به افزونه‌ای که باعث بروز اختلال در سایتتان شده است را تشخیص دهید. اگر استفاده از firebug و جزئیات ارائه توسط آن برای شما قابل استفاده نبود باید مراحل زیر را به ترتیب انجام دهید. این روشی است که قبل فراگیر شدن فایرباگ مرسوم بوده است.

  • پس از رویت پیغام خطا باید قالب فعال سایت تان به قالب پیش فرض جوملا تنظیم کنید. سپس بررسی کنید بازهم پیغام خطا پابرجاست یا خیر؟
  • اگر خطا همچنان وجود داشت باید کلیه افزونه‌هایی که خودتان در سایت نصب کردید را غیرفعال کنید تک تک اقدام به فعال کردن آن کنید و در هر مرحله چک کنید پیغام خطا وجود دارد یا خیر.

از آنجایی که علل بروز خطاهای جاوا اسکریپت می‌تواند مختلف باشد هیچ راه حل مشخصی برای حل یکباره کلیه پیغام‌های خطا نمی‌توان ارائه کرد اما برای مشکل JavaScript Conflict یک راه حل وجود دارد که به ما کمک می‌کند تا با انجام آن روند اجرای سایت را مجددا فعال کنیم و(اصطلاحا سایت را بالا بیاوریم) تا مشکل را ریشه‌ای حل کنیم.

به این منظور باید از حالت JQuery noConflict استفاده کنیم.

تمام پلاگین‌ها و کتابخانه‌های موجود در Jquery از namespace جی کوئری (JQuery) استفاده می‌کنند و تمام آبجکت‌های global در JQuery namespace ذخیره می‌شوند و این موضوع باعث ایجاد اختلال بین کتابخانه JQuery و سایر کتابخانه‌ها مانند prototype.js و MooTools و ... می‌شود یکی از راه‌های اجتناب از این اختلال استفاده از حالت JQueryNoConflict است به این شکل که در صفحه بلافاصله قبل از لود شدن سایر توابع و قبل از اینکه از JQuery در صفحه تان استفاده کنید باید این حالت را تعریف کنید.


<source lang="php" > <script src="/prototype.js"></script> <script src="/jquery.js"></script> <script>

jQuery.noConflict();

jQuery( document ).ready(function( $ ) { // You can use the locally-scoped $ in here as an alias to jQuery. $( "div" ).hide(); });

// The $ variable in the global scope has the prototype.js meaning. window.onload = function(){ var mainDiv = $( "main" ); }

</script> </source>


در حقیقت از JQuery و $ به صورت لوکال استفاده می‌کنید تا از بروز تداخل جلوگیری به عمل آورید. این کد را می‌توانید در افزونه‌ای که باعث ایجاد تداخل می‌شود استفاده کنید به نحویکه در ابتدا این فایل js اجرا شود. به عنوان مثال اگر قالبی که استفاده می‌کنید JavaScript Conflict دارد کد بالا را باید در تگ head فایل Index.php قالب تان استفاده نمایید.



جمع آوری و ترجمه توسط :شهاب مطاع پور

Indent support.png
هر گونه سوال و یا مشکلی در این رابطه دارید، می‌توانید در انجمن تخصصی تیم جوملا فارسی جستجو کرده و در صورت عدم دریافت نتیجه مورد نظر، سوال جدیدی را مطرح کنید.
8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.