استفاده از متد support در جی کوئری

Ratings
(0)

 ما نیاز داریم که بر روی تمام تگ های a که حاوی یک علامت هش(#) هستند، یک شنونده ی رویداد خاص تعریف کنیم و همچنین نمی خواهیم برای انجام این کار ریسک کنیم و از دستوراتی استفاده کنیم که مرورگر ما با آنها مشکل دارد:

(function($) {
 $(document).ready(function() {
  $('a')
      .filter(function() {
         var href = $(this).attr('href');
         // Normalize the URL
         if ( !jQuery.support.hrefNormalized ) {
           var loc = window.location;
           href = href.replace( loc.protocol + '//' + loc.host + loc.pathname,'');
          }
          // This anchor tag is of the form <a href="#hash">
          return ( href.substr(0, 1) == '#' );
       })

       .click(function() {
       // Special click handler code
       });
   });
})(jQuery);

 توضیحات

آبجکت jQuery.support در ورژن 1.3 از جی کوئری اضافه شده است و حاوی مقادیر بولین است تا به کدنویسی بر اساس  تشخیص ویژگی های مرورگر کمک کند. در مثال بالا، مرورگر اینترنت اکسپلورر(IE) رفتار متفاوتی در بکار بردن  خصوصیت href دارد. مرورگر اینترنت اکسپلورر به جای اینکه دقیقا مقدار خصوصیت href را برگرداند، آدرس URL کامل را برمی گرداند. با استفاده از خصوصیت hrefNormalized ما در راه حل خود یک نوع آینده نگری انجام داده ایم . تا زمانی که یک نسخه ی دیگر اینترنت اکسپلورر این رفتار را تغییر دهد. در غیر این صورت، ما نیاز داریم که از یک دستور شرطی استفاده کنیم که حاوی ورژن های خاصی از مرورگر خواهد بود.  اما تا جای امکان بهتر است از این روش اجتناب کنیم، زیرا نیاز دارد تا در آینده، با منتشر شدن نسخه های جدید مرورگر ها، کد خود را تغییر دهیم. یک علت دیگر برای اجتناب از خطاب قرار دادن مرورگرهای خاص، این است که برای کلاینت ها این امکان فراهم می آید که از عمد یا سهواً یک رشته ی user agent را گزارش دهند(browser's user agent string). علاوه بر خصوصیت hrefNormalized خصوصیت های زیاد دیگری نیز وجود دارند:

نکته: در کدهای بالا در خط 7 می خواهیم بررسی کنیم که اگر مرورگر href را دست نخورده باقی نمی گذارد(که در مرورگر اینترنت اکسپلورر چنین است) کارهایی را انجام دهیم. برای متوجه شدن دستورات خط 8 و 9 به این آدرس مراجعه کنید.


boxModel

اگر مرورگر بر طبق مشخصات مدل جعبه ای(box model) از W3C CSS رندر شود، مقدار true را برمی گرداند.


cssFloat

اگر از style.cssFloat برای دریافت مقدار float از CSS استفاده شده باشد، مقدار true را برمی گرداند.



hrefNormalized

اگر مرورگر نتایج getAttribute('href') را دست نخورده باقی بگذارد، مقدار true را برمی گرداند.



htmlSerialize

اگر مرورگر به درستی عناصر a را با ویژگی innerHTML سریال سازی(serializes) کند ، true را برمی گرداند.



leadingWhitespace

اگر مرورگر وقتی که از دستور innerHTML  استفاده می شود، فاصله ی سفید(leading whitespace) را حفظ کند، true را برمی گرداند.


noCloneEvent

اگر مرورگر وقتی که عناصر کپی(cloned) می شوند، شنونده ی های رویداد(event handlers) را کپی نکند، مقدار true را برمی گرداند.



objectAll

اگر دستور getElementsByTagName('*') بر روی یک عنصر، تمام عناصر فرزند را برگرداند، مقدار true را برمی گرداند.

 


 
opacity

اگر مرورگر بتواند استایل سی اس اس opacity را تفسیر(interpret) کند، مقدار true را برمی گرداند.



scriptEval

اگر استفاده از دستور appendChild  برای یک تگ <script> باعث اجرای این اسکریپت شود، مقدار true را برمی گرداند.



style

اگر دستور getAttribute('style') بتواند استایل درون خطی(inline style) مشخص شده برای یک عنصر را برگرداند، مقدار true را برمی گرداند.



tbody

اگر مرورگر اجازه دهد که عناصر <table> بدون عنصر <tbody> استفاده شوند، مقدار true را برمی گرداند.

 {module کمک نقدی به نویسنده}

  • بازدید: 452

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال