gpt4 book ai didi

jquery html() 去除脚本标签

转载 作者:技术小花猫 更新时间:2023-10-29 11:48:02 25 4
gpt4 key购买 nike

我需要用 ajax 调用生成的 html 替换我页面中 div 的内容。问题是 html 中有一些必要的脚本,而且 jquery html() 函数似乎将它们剥离了,我需要过滤响应并只获取特定的 div。

我正在考虑一种解决方法,即从 ajax 响应中提取所有脚本标签,然后将它们附加到 DOM 中,但我在这样做时遇到了麻烦。

这是我的代码;

   $('a.link-vote').live('click',function(){
var idfeedback = $(this).attr('id').split('-')[1];
var href = $(this).attr('href');
$('.feedback-' + idfeedback + '-loader').show();
$.ajax({
type: "POST",
url: href,
success: function(response){
var x = $(response).find('#feedback-'+ idfeedback).html();
$('.feedback-' + idfeedback + '-loader').hide();
$('#feedback-'+ idfeedback).html(x);

}
});
return false;
});

我发现了这个老话题: jQuery - script tags in the HTML are parsed out by jQuery and not executed

但这是任何结论。我尝试了那里建议的解决方案,但没有一个有效。

编辑:我似乎找到了基于那个旧主题的解决方法,但它并不漂亮;

  var dom = $(response);
// var x = $(response).find('#feedback-'+ idfeedback).html();
$('.feedback-' + idfeedback + '-loader').hide();
//$('#feedback-'+ idfeedback).html(x);

$('#feedback-'+ idfeedback).html(dom.find('#feedback-'+ idfeedback).html());

dom.filter('script').each(function(){
var obj = $(this);
$('#feedback-'+ idfeedback + ' .feedback-comments').append(obj);
});

一定有一个简单的方法。

最佳答案

编辑:我累了,不想思考。您可以只使用 native innerHTML方法而不是 .html() :

$('#feedback-' + idfeedback)[0].innerHTML = x;

原答案:

我的直觉是你链接的答案对你不起作用,因为包含的脚本是用 src 调用的<script> 之间的属性而不是脚本内容和 </script>标签。这可能有效:

$.ajax({
url: 'example.html',
type: 'GET',
success: function(data) {

var dom = $(data);

dom.filter('script').each(function(){
if(this.src) {
var script = document.createElement('script'), i, attrName, attrValue, attrs = this.attributes;
for(i = 0; i < attrs.length; i++) {
attrName = attrs[i].name;
attrValue = attrs[i].value;
script[attrName] = attrValue;
}
document.body.appendChild(script);
} else {
$.globalEval(this.text || this.textContent || this.innerHTML || '');
}
});

$('#mydiv').html(dom.find('#something').html());

}
});

请注意,这还没有经过任何测试,可能会吃掉婴儿。

关于jquery html() 去除脚本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4079179/

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