当前位置: 首页 > 面试题库 >

jQuery html()剥离脚本标签

靳祺然
2023-03-14
问题内容

我需要用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;
    });

但这是任何结论。我尝试了那里提出的解决方案,但没有一个起作用。

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

  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);
                });

必须有一个简单的方法。


问题答案:

编辑:我累了,没有思考。您可以使用本机innerHTML方法来代替.html()

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

原始答案:

我的直觉是,您链接的答案对您不起作用,因为所包含的脚本是使用src属性而不是<script>and
</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());

        }
    });

请注意,此产品尚未经过任何测试,可能会吞噬婴儿。



 类似资料:
  • 问题内容: 是否存在现有的Java库,该库提供了一种从字符串中剥离所有HTML标记的方法?我正在寻找与PHP中的功能等效的东西。 我知道我可以使用这个问题中描述的正则表达式,但是我很好奇,是否可能已经有一种方法可以在Apache Commons库中的某个地方使用。 问题答案: 在开放了将近一个星期的问题之后,我可以肯定地说,Java API或Apache库中没有可用的方法可从字符串中剥离HTML标

  • 我试图使用PDFBox从pdf文件中提取带有坐标的文本。 我混合了一些在互联网上找到的方法/信息(stackoverflow也是),但是我有坐标的问题似乎是不对的。例如,当我试图使用坐标在tex上画一个矩形时,矩形被画在了其他地方。 这是我的代码(请不要判断风格,写得很快只是为了测试) TextLine.java myStripper.java 单击AWT按钮上的事件 有什么建议吗?我做错了什么?

  • 我知道我可以在CKEditor配置文件中添加异常来允许某些HTML标记,但我希望有一种更简单的方法来实现这一点 基本上,我只需要一个简单的方法,以文字标题图像。有没有办法用CKEditor不会删除的东西复制 和 的功能?

  • 问题内容: 我有这个HTML输入: 我想使用正则表达式删除HTML标记,以便输出为: 谁能建议使用正则表达式执行此操作? 问题答案: 您可以使用称为Jericho Html解析器的HTML解析器。 您可以从这里下载-http://jericho.htmlparser.net/docs/index.html Jericho HTML Parser是一个Java库,允许对HTML文档的各个部分(包括服

  • 我在wordpress中编写了一个php页面,它应该从数据库中获取一些信息并显示到页面上。我正在尝试添加直接从页面更新信息的功能,似乎有什么东西正在剥离我的第一个表单标记,但其他的没有。有没有人见过这样的事情,或者知道可能发生的事情? 这里是PHP 第一次通过循环得到的html如下: 注意表单标记是如何丢失的。通过循环的另外两次传递,这是到页面的HTML输出: 在那里,您将注意到表单标记已正确应用

  • 问题内容: 如何从字符串中删除HTML标签,以便可以输出纯文本? 问题答案: 嗯,我尝试了您的功能,并在一个小例子上工作了: 你能举一个例子吗? Swift 4和5版本: