Bagaimana untuk menentukan dengan pasti sama ada Objek JavaScript ialah Elemen DOM?

Mary-Kate Olsen
Lepaskan: 2024-10-27 07:08:03
asal
644 orang telah melayarinya

How to Reliably Determine if a JavaScript Object is a DOM Element?

Cara Menentukan Status Objek DOM dalam JavaScript

Dalam JavaScript, membezakan antara objek DOM (Model Objek Dokumen) dan objek JavaScript biasa adalah penting untuk operasi tertentu. Walaupun pendekatan tradisional untuk menyemak sifat tagName berfungsi dalam kebanyakan kes, ia boleh gagal dalam sesetengah penyemak imbas yang tidak menguatkuasakan sifat baca sahaja.

Penyelesaian Komprehensif

Untuk menangani isu ini, pertimbangkan fungsi berikut:

<code class="javascript">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'
    );
  }
}</code>
Salin selepas log masuk

Kod ini memanfaatkan W3 DOM2 untuk penyemak imbas yang disokong dan menyemak sifat tertentu dalam penyemak imbas bukan DOM2.

Pilihan Tambahan

Pendekatan lain ialah menggunakan kod berikut:

<code class="javascript">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';
}</code>
Salin selepas log masuk

Kod ini membezakan antara nod dan elemen DOM, menangani potensi perbezaan dalam pelaksanaan penyemak imbas.

Atas ialah kandungan terperinci Bagaimana untuk menentukan dengan pasti sama ada Objek JavaScript ialah Elemen DOM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan