Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menjamin Pelaksanaan Skrip Sebaris Selepas Menggunakan innerHTML?

Bagaimana untuk Menjamin Pelaksanaan Skrip Sebaris Selepas Menggunakan innerHTML?

Linda Hamilton
Lepaskan: 2024-12-31 08:21:10
asal
411 orang telah melayarinya

How to Guarantee Inline Script Execution After Using innerHTML?

Teknik Melaksanakan Skrip Sebaris Menggunakan innerHTML

Memasukkan skrip ke dalam halaman web menggunakan innerHTML mempunyai hadnya. Walaupun skrip mungkin muncul dalam DOM, ia sering gagal untuk dilaksanakan secara automatik. Untuk menangani isu ini dan mendayakan pelaksanaan skrip semasa dimasukkan, kaedah tertentu boleh digunakan.

Kaedah: Gantikan Skrip Secara Rekursif

Pendekatan ini melibatkan menggantikan setiap elemen skrip sebaris dengan rakan sejawatan yang boleh dilaksanakan. Coretan kod berikut menunjukkan pelaksanaan:

function nodeScriptReplace(node) {
  if (nodeScriptIs(node) === true) {
    node.parentNode.replaceChild(nodeScriptClone(node), node);
  } else {
    var i = -1,
      children = node.childNodes;
    while (++i < children.length) {
      nodeScriptReplace(children[i]);
    }
  }

  return node;
}

function nodeScriptClone(node) {
  var script = document.createElement("script");
  script.text = node.innerHTML;

  var i = -1,
    attrs = node.attributes,
    attr;
  while (++i < attrs.length) {
    script.setAttribute((attr = attrs[i]).name, attr.value);
  }
  return script;
}

function nodeScriptIs(node) {
  return node.tagName === 'SCRIPT';
}
Salin selepas log masuk

Contoh Penggunaan:

nodeScriptReplace(document.getElementsByTagName("body")[0]);
Salin selepas log masuk

Kaedah ini merentasi pepohon DOM secara rekursif, mengenal pasti dan menggantikan elemen skrip sebaris dengan yang boleh dilaksanakan, memastikan skrip dilaksanakan seperti yang diharapkan.

Atas ialah kandungan terperinci Bagaimana untuk Menjamin Pelaksanaan Skrip Sebaris Selepas Menggunakan innerHTML?. 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