gpt4 book ai didi

jquery - 浏览器在不加载资源的情况下为 jQuery 解析 HTML

转载 作者:太空狗 更新时间:2023-10-29 16:43:28 25 4
gpt4 key购买 nike

是否可以通过 JavaScript 将 HTML 传递给浏览器并使用 jQuery 对其进行解析,但不加载外部资源? (脚本、图像、flash,任何东西)

如果这是我能做的最好的,我会使用 XML 解析器,但如果可能的话,我希望允许松散的 HTML。

必须兼容Chrome、Firefox、最新的IE。

最佳答案

var html = someHTML; //passed in html, maybe $('textarea#id').val();? I don't understand what you mean by 'passed in html'
var container = document.createElement('div');
container.innerHTML = html;
$(container).find('img,embed,head,script,style').remove();
//or
$(container).find('[src]').remove();

var target = someTarget; //place to put parsed html
$(container).appendTo($(target));

编辑

测试工作

removeExt = function(cleanMe) {
var toScrutinize = $(cleanMe).find('*'); //get ALL elements
$.each(toScrutinize, function() {
var attr = $(this)[0].attributes; //get all the attributes
var that = $(this);
$.each(attr, function(){
if ($(that).attr(this.nodeName).match(/^http/)) {//if the attribute value links externally
$(that).remove(); //...take it out
}
})
})
$('script').remove(); //also take out any inline scripts
}

var html = someHTML;
var container = document.createElement('div');
container.innerHTML = html;
removeExt($(container));
var target = someTarget;
$(container).appendTo($(target));

这将匹配 src、href、link、data-foo 等等……无法进行外部链接。 http 和 https 都匹配。内联脚本被杀死。如果它仍然是一个安全问题,那么也许这应该在服务器端完成,或者混淆你的 JS。

关于jquery - 浏览器在不加载资源的情况下为 jQuery 解析 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5861249/

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