如何使用JavaScript或JQuery对HTML实体进行编码和解码?
var varTitle = "Chris' corner";
Run Code Online (Sandbox Code Playgroud)
我希望它是:
var varTitle = "Chris' corner";
Run Code Online (Sandbox Code Playgroud) 我有类似的字符串
var str = 'One & two & three';
Run Code Online (Sandbox Code Playgroud)
由Web服务器呈现为HTML.我需要将这些字符串转换为
'One & two & three'
Run Code Online (Sandbox Code Playgroud)
目前,这就是我正在做的事情(借助jQuery):
$(document.createElement('div')).html('{{ driver.person.name }}').text()
Run Code Online (Sandbox Code Playgroud)
但是我有一种不安的感觉,我做错了.我试过了
unescape("&")
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,decodeURI/decodeURIComponent也没有.
有没有其他更原生和更优雅的方式呢?
假设我从服务请求中获得了一些JSON,如下所示:
{
"message": "We're unable to complete your request at this time."
}
Run Code Online (Sandbox Code Playgroud)
我不确定为什么那个抄袭被编码为那个('); 我所知道的是我想解码它.
这是一种使用jQuery的方法,它突然出现在我脑海中:
function decodeHtml(html) {
return $('<div>').html(html).text();
}
Run Code Online (Sandbox Code Playgroud)
但这似乎(非常)hacky.什么是更好的方式?有"正确"的方式吗?
我有一些与XML-RPC后端通信的Javascript代码.XML-RPC返回表单的字符串:
<img src='myimage.jpg'>
Run Code Online (Sandbox Code Playgroud)
但是,当我使用Javascript将字符串插入HTML时,它们会逐字呈现.我没有看到图像,我真的看到了字符串:
<img src='myimage.jpg'>
Run Code Online (Sandbox Code Playgroud)
我的猜测是HTML正在通过XML-RPC通道进行转义.
我怎样才能在Javascript中取消字符串?我尝试了这个页面上的技术,但未成功:http://paulschreiber.com/blog/2008/09/20/javascript-how-to-unescape-html-entities/
诊断问题的其他方法有哪些?
可能重复:
如何使用jQuery解码HTML实体?
我想转换这个文字:
"<p>name</p><p><span style="font-size:xx-small;">ajde</span></p><p><em>da</em></p>"
Run Code Online (Sandbox Code Playgroud)
到HTML,带有标签和Javascript或Jquery中的所有内容.这该怎么做?
我正在使用一个Web服务,它会给我以下值:
var text = "<<<&&&";
Run Code Online (Sandbox Code Playgroud)
我需要使用javascript将其打印为"<<< &&&".
但是这里有一个问题:我不能使用内部HTML(我实际上是将这些值发送到创建文本节点的原型库,因此它不会取消我的原始html字符串.如果编辑库不是一个选项,如何你会忘记这个HTML吗?
我需要在这里承担真正的交易,这种类型的字符串有什么风险?innerHTML是如何做到的?还有哪些其他选择?
编辑 - 问题不是关于使用javascript普通的escape/unescape甚至jQuery/prototype实现它们,而是关于可能来自使用任何这些的安全问题...又名"他们告诉我使用它们是非常不安全的"
(对于那些试图用innerHTML来解决这个奇怪字符串的问题,请看看这个简单的例子:
<html>
<head>
<title>createTextNode example</title>
<script type="text/javascript">
var text = "<<<&&&";
function addTextNode(){
var newtext = document.createTextNode(text);
var para = document.getElementById("p1");
para.appendChild(newtext);
}
function innerHTMLTest(){
var para = document.getElementById("p1");
para.innerHTML = text;
}
</script>
</head>
<body>
<div style="border: 1px solid red">
<p id="p1">First line of paragraph.<br /></p>
</div><br />
<button onclick="addTextNode();">add another textNode.</button>
<button onclick="innerHTMLTest();">test innerHTML.</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 问题说明了一切:)
例如.我们有>,我们>只需要使用javascript
更新:似乎jquery是一个简单的出路.但是,拥有轻量级解决方案会很不错.更像是一个能够自己完成这项任务的功能.
我如何在JS中浏览HTML实体?
当谷歌搜索我真的看到了一个巨大的开关和人们自己滚动的答案.
我想要<html xmlns="http://www.w3.org/1999/xhtml" >成为一个字符串<html xmlns="http://www.w3.org/1999/xhtml" >
我有HTML数据存储在数据库中,我希望按原样显示.它不断转换
标签,<br />这是我不想要的行为.我试过玩javascript替换,但仍然无法将其转换为常规HTML.
var venueaddress = msg.result[0].venueaddress;
var venueaddress2 = venueaddress.replace("[newline]", "<br />");
alert(venueaddress2); //shows <br />
$("#venueaddress").text(venueaddress2); //lets now display it on the browser
<li><h3>Venue Address</h3><p><strong> <span id="venueaddress"></span> </strong></p></li>
Run Code Online (Sandbox Code Playgroud)
然而,当它在浏览器上呈现时,它具有<br />,因此没有换行符.
如何解码HTML实体喜欢 '它的原始角色?
在浏览器中,我们可以创建一个DOM来完成这个技巧(参见这里),或者我们可以像他一样使用一些库
在NodeJS中,我们可以使用一些第三方库,如html-entities
如果我们想使用纯JavaScript来完成这项工作怎么办?
stackoverflow中有许多类似的问题和有用的答案,但我找不到在浏览器和Node.js上都有效的方法.所以我想分享一下我的观点.
我在下面发表了我的意见.我希望它可以为某人提供帮助.:)