Javascript -使用innerHTML输出字符串*WITHOUT* html编码的特殊字符
Javascript - using innerHTML to output strings *WITHOUT* HTML-encoded special characters?
似乎JavaScript在通过innerHTML()函数输出内容时自动将某些特殊字符转换为HTML实体。这是一个问题,因为我需要能够输出<和>而不转换为gt;和lt; 和>
这种自动转换可以被阻止、逆转或转义吗?到目前为止,无论我做什么,<和>总是自动编码到HTML实体中。和>
示例代码:
function DisplayQueries() {
var IDs = ['AllOpenedINC','AllOpenedCRQ','AllClosedINC','AllClosedCRQ','SameDayINC','SameDayCRQ','NotSameDayINC','NotSameDayCRQ',
'StillOpenINC','StillOpenCRQ','OpenOldINC','OpenOldCRQ','OtherQueuesINC','OtherQueuesCRQ']
for (var i = 0; i < IDs.length; i++) {
if (eval(IDs[i]))
document.getElementById(IDs[i]).innerHTML = eval(IDs[i]);
}
}
查询变量示例:
AllOpenedINC = "('Company*+' = '"test'" OR 'Summary*' = '"%test%'") AND ('Submit Date' >= '"" + theDate +
" 12:00:00 AM'" AND 'Submit Date' <= '"" + theDate + " 11:59:59 PM'")" + nameINC;
你应该关注你想要完成的结果,而不是做这件事的方法。innerHTML()做编码,innerText()和textContent()也做编码。所以你应该解码你的字符串如果你想要<</p>
你可以使用这个unescapeHTML()函数来得到你想要的结果。
function unescapeHTML() {
return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&');
}
我希望这对你有帮助。
我认为你的问题建立在一个错误的前提之上。做一个非常简单的测试:
document.getElementById("testdiv").innerHTML = '<h1><em>Hello</em></h1>';
如果这工作得很好,那么问题不在JS方面,而是你在系统中使用一些其他组件对你的字符进行html编码。
我知道是怎么回事了。没有简单的方法可以防止innerHTML将特殊字符转换为HTML实体,但是由于将DIV的内容复制到剪贴板时出现了问题(使用IE-only JS,因为这是在每个人都必须使用IE的政府环境中),我只是使用replace()函数将HTML实体重新转换回<和>。和>
可以使用jquery和.append()
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何设置html元素填充的动画
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何编写HTML输入的JS内联
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量
- 如何使Javascript动态html表及其上的事件
- 在chrome.tabs.onCreated之后加载HTML页面
- 如何在vs2002中调试html页面
- 如何使用javascript或html下载PDF格式的填写表单
- 视频HTML没有'无法在Internet Explorer 11上工作
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 使用angular重定向到html页面
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 在html Select中添加搜索
- 多级HTML表单
- Javascript -使用innerHTML输出字符串*WITHOUT* html编码的特殊字符