jquery html() 去掉脚本标签

2024-02-01

我需要用 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 - HTML 中的脚本标签被 jQuery 解析出来并且不被执行 https://stackoverflow.com/questions/2699320/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);
                });

一定有一个简单的方法。


编辑:我累了,没有思考。你直接用原生的就可以了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());

    }
});

请注意,这尚未经过任何测试,可能会吃掉婴儿。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jquery html() 去掉脚本标签 的相关文章

随机推荐

  • 从 R 中的给定字符串中提取日期

    这是我有的一个字符串 7MA S VE MS FB MEASURE P1 2013 08 21 17 42 19 BMP 我正在尝试以这种方式提取日期 library stringr as Date str extract test 0 9
  • 如何向多个收件人发送消息?

    我在使用 Gmail API 向多个地址发送邮件时遇到一些问题 我已成功将一封邮件仅发送到一个地址 但当我在邮件中包含多个以逗号分隔的地址时 出现以下错误 To field 请求时发生错误 https www googleapis com
  • 如何避免在多态打印宏中使用 #if

    让我们尝试运行以下代码 include
  • JavaScript 获取数组的一部分

    如何创建一个新数组 其中包含旧数组中编号为第 n 到第 n k 的所有元素 你想要的slice https developer mozilla org en US docs JavaScript Reference Global Objec
  • Python ZeroMQ PUSH/PULL——丢失消息?

    我正在尝试使用python with zeroMQ in PUSH PULL模式 发送大小的消息4 MB 每隔几秒钟 由于某种原因 虽然看起来所有消息都已发送 但服务器似乎只收到了其中一些消息 我在这里缺少什么 这是客户端的代码 clien
  • SQL查询获取具有子记录列表的父表记录

    我在 MS SQL Server 2005 数据库中有两个表 父表和子表 其中父表可能与许多子记录相关 Child parent id 与 parent id 相关 子表也有列 foo 我需要带回父表中的所有记录 其中 child foo
  • 如何在 Python 上使用 Xlib 模拟鼠标点击

    出于教育目的 我开始使用以下命令编写 python 脚本cwiid and Xlib这样我就可以像鼠标一样使用我的wiimote 到目前为止 我已经通过调用让光标移动disp warp pointer dx dy 然后打电话disp syn
  • SVGSVGElement.children 在 IE11 中不起作用?

    我这里有一个非常简单的jsfiddle http jsfiddle net 9uS3u http jsfiddle net 9uS3u 它由以下 html 组成
  • httprequest.getsession 返回 null

    我编写了一个过滤器 它将使当前会话无效并创建新会话并将旧会话的属性复制到新会话中 这在 tomcat5 和 jdk 1 4 中工作正常 但是当我将其切换到 tomcat6 和 jdk 1 6 时 一旦过滤器运行 然后处理下一个请求httpr
  • 如何使用 Python 跟踪在网络浏览器中打开的网页? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个 Python 脚本 它可以跟踪我的网络浏览器 Mozilla Firefox 23 中打开了哪些网页 我不知道从哪里开始
  • Google Colaboratory:有关其 GPU 的误导性信息(仅 5% RAM 可供某些用户使用)

    更新 这个问题与Google Colab的 笔记本设置 硬件加速器 GPU 有关 这个问题是在添加 TPU 选项之前写的 阅读了有关 Google Colaboratory 提供免费 Tesla K80 GPU 的多个令人兴奋的公告 我尝试
  • html 标签内的正则表达式

    我想从以下 HTML 片段中解析高清价格 我只有 html 代码的片段 所以我不能为此使用 HTML 解析器 div span View In iTunes span span class price 19 99 span ul class
  • 有没有办法在 Typescript 文件中使用 svelte getContext 等 svelte 函数?

    我正在使用 getContext 与苗条简单模态 https www npmjs com package svelte simple modal对于我的项目中的模态 有没有办法在 Typescript 文件中使用 getContext 等
  • 有关编写 Debian/Ubuntu deb 软件包的资源? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开始为 Ubuntu 服务器上的软件包准备安装脚本 我想编写一个脚本作为 deb 包 它知道必须
  • Node.js:在继续之前在循环中等待回调

    我有一个循环 里面有一个异步调用和一个回调 为了能够继续 我需要回调在整个循环中一直触发 然后显示循环的结果 我尝试过的各种控制方法都行不通 已经尝试过 Step Tame js async js 等 关于如何继续前进有什么建议吗 arra
  • 计算经过三个数组的最短路径

    我有三个数组 也可能是n个 现在让我们举三个 他们有这样的价值观 Array1 143 181 Array2 41 153 241 Array3 22 67 131 190 我想找到这三个数组中的那些元素 谁的差异最小 在本例中 143 1
  • 我在 sdk 管理器中找不到“Android SDK 文档”

    我有一个问题 它是关于找到 Android SDK 的文档 我在谷歌和这个网站中搜索 我找到了关于这个问题的解决方案topic https stackoverflow com questions 15748558 android devel
  • Java - 如何获取 JSON 数组中的对象值?

    我有一个类似于下面示例的 JSON 我正在尝试获取一些值 例如值 results shipper id results updated false notification false some data id 15989 pieces 0
  • 通过管道 $_POST 到外部命令

    我有一个程序可以读取 JSON 请求stdin 我想用 PHP 调用它 这就是我现在所拥有的 这可行 但是有没有更直接的方法将 PHP 中的字符串放入stdin 类似的东西pipe json encode POST JSON NUMERIC
  • jquery html() 去掉脚本标签

    我需要用 ajax 调用生成的 html 替换页面中 div 的内容 问题是 html 中有一些必要的脚本 并且 jquery html 函数似乎将它们删除了 我需要过滤响应并只获取特定的 div 我正在考虑一种解决方法 即从 ajax 响