gpt4 book ai didi

javascript - 强制重新评估内联并包含 Javascript

转载 作者:行者123 更新时间:2023-11-30 23:44:53 25 4
gpt4 key购买 nike

我正在使用 Greasemonkey 将 Javascript 注入(inject)到页面中,对正文内容进行一些处理(添加标记),然后重新插入内容。问题是原始内容中的所有事件都会丢失,从而破坏了页面最初加载时添加的 onClick 事件等内容。

我最初的想法是这样做(使用 jQuery),将脚本标签重新添加到头部:

$('script').each(function(s, script) {  $(script).appendTo('head');  })

或者只是:

$('script').appendTo('head');

我认为这会导致脚本重新加载/重新评估,但它不起作用。

我想要执行此操作的一个简单示例位于:http://en.m.wikipedia.org/wiki/John_Hardy_%28song%29我需要重新应用在 application.js 中找到的 this 事件

 $("h2.section_heading").click(function() {
// Do something
})

最佳答案

浏览器是否执行以及何时执行的问题<script>通过各种方法添加到页面的标签是一个棘手的问题,如果 jQuery 试图解决这个问题,就会变得更加复杂。你真的不想卷入其中。

无论如何,正如 Pointy 所说,无法保证仅第二次运行页面脚本就能使它们处理新内容。它们可能有对旧(现已替换)节点的各种引用,并且可能根本不希望再次输入。

不要对标记进行处理。 HTML 字符串黑客行为非常不可靠,除了当您用 innerHTML 写回它时替换所有旧对象的问题之外。 。例如,如果您添加 '<span class="highlight">'通过正则表达式黑客攻击 HTML,您刚刚给自己挖了一大堆错误、不兼容性和潜在的 XSS 漏洞。

浏览器中已经有一个完美的 DOM 树。对其进行处理,在现有节点上添加元素并设置属性!它更容易、更可靠,并且对于许多操作来说速度更快。

关于javascript - 强制重新评估内联并包含 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com