كيفية تحديد حالة كائن DOM في JavaScript
في JavaScript، يعد التمييز بين كائنات DOM (نموذج كائن المستند) وكائنات JavaScript العادية أمرًا بالغ الأهمية لعمليات معينة. على الرغم من أن الطريقة التقليدية للتحقق من خاصية tagName تعمل في معظم الحالات، إلا أنها قد تفشل في بعض المتصفحات التي لا تفرض خصائص للقراءة فقط.حل شامل
لمعالجة هذه المشكلة، خذ بعين الاعتبار الوظيفة التالية:function isElement(obj) {
try {
// W3 DOM2 (works for FF, Opera, and Chrome)
return obj instanceof HTMLElement;
} catch (e) {
// Non-DOM2 browsers
return (
typeof obj === 'object' &&
obj.nodeType === 1 &&
typeof obj.style === 'object' &&
typeof obj.ownerDocument === 'object'
);
}
}
يعمل هذا الرمز على الاستفادة من W3 DOM2 للمتصفحات المدعومة ويتحقق من خصائص محددة في المتصفحات غير DOM2.
خيارات إضافية هناك طريقة أخرى تتمثل في استخدم الكود التالي:
function isNode(o) { نوع الإرجاع للعقدة === "كائن" ؟ س مثيل العقدة : س && نوع o === 'كائن' && نوع o.nodeType === 'رقم' && typeof o.nodeName === 'string'; } الوظيفة هي العنصر (س) { نوع الإرجاع HTMLElement === "كائن" ؟ o مثيل HTMLElement : س && نوع o === 'كائن' && س !== فارغة && o.nodeType === 1 && typeof o.nodeName === 'string';function isNode(o) {
return typeof Node === 'object'
? o instanceof Node
: o &&
typeof o === 'object' &&
typeof o.nodeType === 'number' &&
typeof o.nodeName === 'string';
}
function isElement(o) {
return typeof HTMLElement === 'object'
? o instanceof HTMLElement
: o &&
typeof o === 'object' &&
o !== null &&
o.nodeType === 1 &&
typeof o.nodeName === 'string';
}
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3