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

解码并返回到JavaScript

杜茂
2023-03-14
问题内容

我有像

var str = 'One & two & three';

由Web服务器呈现为HTML。我需要将这些字符串转换为

'One & two & three'

当前,这就是我正在做的事情(借助于jQuery):

$(document.createElement('div')).html('{{ driver.person.name }}').text()

但是我有一种不安的感觉,我做错了。我努力了

unescape("&")

但它似乎无效,decodeURI / decodeURIComponent也无效。

还有其他更自然,更优雅的方式吗?


问题答案:

用于从JavaScript解释HTML(文本和其他形式)的一个更现代的选项是DOMParserAPI中的HTML支持。这使您可以使用浏览器的本机HTML解析器将字符串转换为HTML文档。自2014年底以来,所有主要浏览器的新版本均已支持该功能。

如果我们只想解码一些文本内容,则可以将其作为唯一的内容放入文档正文中,解析文档,然后将其拉出.body.textContent

var encodedStr = 'hello & world';



var parser = new DOMParser;

var dom = parser.parseFromString(

    '<!doctype html><body>' + encodedStr,

    'text/html');

var decodedString = dom.body.textContent;



console.log(decodedString);

我们可以在规范草案中DOMParser看到,已解析的文档未启用JavaScript,因此我们可以执行此文本转换而无需担心安全性。

parseFromString(str, type)方法必须运行以下步骤,具体取决于 类型

  • "text/html"

用an 解析 strHTML parser,并返回新创建的Document

脚本标记必须设置为“禁用”。

注意

script元素被标记为不可执行,并且将其内容noscript解析为标记。

这超出了此问题的范围,但是请注意,如果您要获取解析的DOM节点本身(而不仅仅是它们的文本内容)并将其移至实时文档DOM,则可能会重新启用其html" target="_blank">脚本,并且可以出于安全考虑。我尚未对此进行研究,因此请谨慎行事。



 类似资料:
  • 我正在尝试解码一个Base64编码的字符串,而当使用UTF8编码时,它总是返回nil。我尝试将字符编码更改为几种不同的选项,但无法使其返回与将其放入https://www.base64decode.org/这样的网站时相同的值 我尝试解码的字符串是“qc6msdfm1pizbp0szoqmoq==” 下面是我用来测试的代码

  • 我正在尝试使用以下代码在Swift中将base64字符串解码为图像: 不幸的是,变量decodedData的值为nil 通过代码调试,我验证了变量encodedImageData不是零,是正确的编码图像数据(通过使用在线base64到图像转换器验证)。我的问题背后的原因可能是什么?

  • 我正在从Go中的YAML输入创建一个文档生成器。它需要指定每个项目/节点是从YAML文件的哪一行生成的。有没有办法在Go中实现? 例如,这是一个YAML文件 我希望看到以下内容 我看到一个类似的问题回答了Python解析YAML,返回行号,但我不知道如何利用https://pkg.go.dev/gopkg.in/yaml.v3

  • 问题内容: 我有一个包含一个结构的结构,并且我想序列化为一个对象: 如何最好地将Packet序列化为,以及如何最好地对其进行反序列化? 使用 只给了我名称和数据的指针。我正在探索,但是随后我必须将Packet作为对象,并且我希望将其保留为结构。 干杯 尼克 问题答案: 没有真正得到任何反馈,这是我最终得到的解决方案: 我的结构的制造和功能 更改为,以便在32位和64位平台上具有相同的大小 具有一个

  • 问题内容: 我看到许多人都遇到过类似的问题,但是我还没有尝试确切地找到我想要的东西。 因此,我有一个读取输入图像并将其转换为字节数组的方法: 我现在要做的是将其转换回BufferedImage(我有一个需要此功能的应用程序)。请注意,“ test”是字节数组。 但是,这将返回以下异常: 这是因为BufferedImage img为空。我认为这与以下事实有关:在我从BufferedImage到字节数

  • 我一直在尝试在我的应用程序中实现GMAIL API,该应用程序是使用Swift5和Xcode构建的。我已经成功地检索到来自用户的电子邮件,但我无法从编码字符串中获得实际的文本。每当我尝试将这个base64编码的数据转换为普通字符串时,它都返回NIL。 这是绳子 stackoverflow的一些答案建议向string添加填充,但这也不起作用。