gpt4 book ai didi

javascript - 删除所有内联 JavaScript - Jquery

转载 作者:行者123 更新时间:2023-12-03 12:30:33 25 4
gpt4 key购买 nike

在我的代码中,我有一个父 DOM 元素 docElem。这是一个包含完整 HTML 文档的 iframe。现在我想删除所有内联 JavaScript。如何在 JQuery 中做到这一点。我们是否有任何选择器可以提取具有与 on.* 正则表达式匹配的属性的所有元素?

请注意,我询问的是所有内联脚本,而不是单独的 onclick...

编辑为了消除任何混淆,这里有一个示例代码:

var docHtml = '<html><head></head><body ><img src="smiley.gif" ><img src="smiley2.gif" onfocus="methodCall()"><div  onclick="methodCall()" id="uvTab" ></div></body></html>';
var docElem = $($.parseHTML('<iframe></iframe>'))
.append($.parseHTML(docHtml, true));
var tagList = //some thing here that can bring me the img tag and the div tag.

最佳答案

您可以使用html-sanitizer来自Google Caja项目。它可以在浏览器中独立使用。

您可以从以下位置获取:

http://caja.appspot.com/html-css-sanitizer-minified.js

或者:

http://caja.appspot.com/html-sanitizer-minified.js

(取决于您是否也需要清理 css)

您必须定义两个函数来告诉清理程序您希望它如何处理 URL 和元素 ID(我将它们命名为 sanUrl()sanId()在这里)。

例如,您可能希望完全删除 ID,以便它们不会干扰您自己的 ID:

function sanId(id) {
return undefined;
}

或者您可能想添加一些前缀:

function sanId(id) {
return "PREFIX" + id;
}

或者如果你觉得合适的话就直接使用它们:

function sanId(id) {
return id;
}

与 URL 相同:

function sanUrl(url) {
// sanitize urls if needed
// eg. add a prefix or remove relative/absolute urls etc.
return url;
}

现在您可以像这样使用 html_sanitize() 函数:

var sanitizedHtml = html_sanitize(originalHtml, sanUrl, sanId);

它会删除比您描述的更多的内容,这意味着如果您有一些未预料到的输入,您不会遇到麻烦。

它还会删除 html、head 和 body 标签,因此如果您需要它们,您可以添加:

fullHtml = "<html><head></head><body>" + sanitizedHtml + "</body></html>";

您也可以例如。使用如下代码获取图像 URL:

$(sanitizedHtml).find('img').addBack().filter('img')
.each(function (i, el) {
var url = $(el).attr('src');
// do something with the URL:
alert(url);
});

查看此演示:

http://codepen.io/rsp/pen/hLmcE

关于javascript - 删除所有内联 JavaScript - Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23952684/

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