gpt4 book ai didi

javascript - jQuery 将 & 转换为 & 并破坏了我的代码。我怎样才能阻止这个?

转载 作者:行者123 更新时间:2023-11-29 20:13:59 25 4
gpt4 key购买 nike

我正在尝试使用 jQuery 通过 AJAX 在网页上嵌入 Flash 电影。 Flash 影片从查询字符串中接收多个命令。

通过 AJAX 命令,jQuery 返回嵌入 flash 电影的 HTML 代码,此代码在查询字符串中包含 &,然后将其转换为 & - 这会破坏代码并停止显示 Flash 电影。 ajax 调用中的数据类型是“文本”,而不是“html”。

我四处搜索,发现有几个人遇到过这个问题。显然,主要问题是使用 .html() 或 .append() 将代码插入网页会自动将 & 转换为 & - 我希望能够在不发生这种情况的情况下插入代码。然而,我满足于简单地将它们再次转换回来(这似乎是我所看到的问题的主要解决方案),但这对我来说根本不起作用。

我正在运行这段代码来替换所有 &与:

$(target+' embed').attr('src',function(){
var currentHref=$(this).attr('src');
var newHref=currentHref.replace(/amp;/ig,'');
return newHref;
});

其中 target 是 flash 影片所在的容器 div 的 ID。这段代码没有找到任何 & - 但是当我查看源代码时 &仍然存在并且 Flash 影片仍然无法正常工作。

我喜欢能够在没有这个 & 的情况下插入代码到 &转换发生。这可以用 jQuery 完成吗?如果做不到这一点,我怎样才能得到这段代码来替换所有 &用 &?

抱歉这个问题太长了,还有 TIA。

最佳答案

裸露的、未转义的 & 只是无效的 HTML。没有理由在标记中包含一个。

任何浏览器,当它看到 & 不是实体引用的一部分时,都会为您修复它以纠正您的错误。这发生在解析时,无论是在加载文档时,还是在将 innerHTML 设置为 html()append() 时。

浏览器不会记住您的原始标记,而只会记住反射(reflect)页面当前状态的一组对象和属性(“DOM”)。这些对象是通过解析您的输入 HTML 来填充的,但是如果您通过读取 innerHTMLhtml() 获取标记,您将获得一组从 DOM 创建的新序列化标记对象,不是您最初放入的标记。您会看到空格、属性顺序的差异,并且原始标记中的任何错误都将得到修复。

当您从脚本与文档交互时,在属性级别 attr()text() 上,您将直接进入 DOM 而无需询问它将它拥有的信息序列化回 HTML 标记。在那种情况下,您将获得页面上的符号作为简单的 &,而不是转义。所以在这种情况下,你的正则表达式自然不会找到任何可以替换的;根本没有“底层标记”供您进行编辑。

所以真正的问题是,您最终得到的是什么字符串是“使代码失败”,它是如何处理的?这在已发布的问题中不可见。

关于javascript - jQuery 将 & 转换为 & 并破坏了我的代码。我怎样才能阻止这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067074/

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