استفاده از متد support در جی کوئری
ما نیاز داریم که بر روی تمام تگ های 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. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.