HTML可以't按原样显示或根本不显示
exhaustive list of all character patterns that HTML can't display as is or not display at all
我的web应用程序中有一个要求,即按原样显示从服务器接收的字符串。当我尝试这样做时,一些字符模式,如''u。。。或者HTML实体被转换为它们的等价表示,额外的空格丢失,''n,''t等也丢失,一些符号被转换为其unicode表示。
我已经编写了代码/正则表达式来满足上述情况,但我不确定是否还有更多。
编辑:我无法控制服务器。此外,一旦服务器处理了字符串,我就无法更改它,因为文本包含一些基于位置和长度的注释
示例:
从服务器接收的字符串:
"一些随机字符串,带有额外的空格,带有''t和''n,以及一些HTML实体,如
>
和unicode,如''u2764"
它将以HTML格式显示,如:
"一些随机字符串,带有额外的空格,带有和,以及一些HTML类似>和unicode的实体❤"
因此,如果单词HTML的注释早在位置:40,长度:4,那么现在新字符串将在位置40 处有其他内容
注意:我不能使用textContent,因为我需要突出显示基于这些注释的文本,这需要一些HTML。
小提琴示例:http://jsfiddle.net/44rct88n/
HTML:
<div ng-controller="MyCtrl">
Hello, {{name}}!
</div>
JS:
var myApp = angular.module('myApp',[]);
//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});
function MyCtrl($scope) {
$scope.name = "some random string, with extra whitespaces, with 't and 'n, and some HTML entities like > and unicode like 'u2764";
}
我得到的输出是:
你好,一些随机字符串,带有额外的空格,带有和,还有一些类似
>
和类似unicode的HTML实体❤!
当您从服务器获取文本时,请使用text/plain
而不是application/json
,文本在RAW_TextFromServer上保持"转义",其他数据可以使用JSON.parse()进行解析
contentType : 'text/plain; charset=utf-8'
}).success(function(data, status, headers, config) {
var theRawText = data.split(/(?:"theTextFromServer":'s*")((?:''"|[^"])*)(?:")/)[1];
var parsedJson = JSON.parse(data);
parsedJson["RAW_TextFromServer"] = theRawText;
return parsedJson;
};
}
对于这里显示的regex,我认为json有一个键"TextFromServer",它包含您想要显示的文本
到目前为止,您已经知道javascript转义,但您需要html转义来正确表示文本。这个功能对来说很方便
function htmlEscape(str) {
return str.replace(/&/g, '&') // must do & first
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
}
若要正确显示空间,可以使用具有适当样式的<pre>
标记。
- 如何在用户按下F5键或单击浏览器时显示自定义的fancybox's后退/关闭按钮
- 使用JS按顺序显示图像,而不是随机显示
- angularjs的ng keydown事件,按下哪个键的值,然后显示按下的键的值
- 我可以请求一个带有JavaScript的网页,然后将其按原样发送到服务器进行进一步分析吗?
- 显示按表单构建的数组的数组元素总数
- 如何按原样打印页面
- 想要多选择2边显示按字母顺序排列的项目
- 显示按字段分组的项目
- 显示按特定格式排列的数组
- 如何在ECMA6提案中按原样使用迭代器
- HTML可以't按原样显示或根本不显示
- 使JQuery按钮显示按下;我换个主题
- 如何保存/缓存dom,以便在点击后退按钮时页面按原样加载
- 用JavaScript使HTML按钮显示按下
- KnockoutJS显示按项目类别排序的列表
- Node.js转换流只按原样传递数据
- jsPDF没有按原样打印
- 如何按原样提交数据到另一个文件
- JavaScript document.write(encoding html tag),按原样打印
- 使用angularjs显示按类别排序的图像网格