我有一个web服务,它返回html字符串作为响应。我想在div元素中显示响应。我从服务中得到的回应是
<span style="text-indent: 29px;padding-top:35px;font-size: 16pt;font-family: Arial;color: #FFFFFF;font-weight: bold;position: absolute;text-decoration: none;">89</span>
<span style="text-indent: 41px;padding-top: 58px;font-size: 8pt;letter-spacing: 1px;font-family: Arial;color: #E5DA95;font-weight: bold;position: absolute;text-decoration: none">89</span>
<span style="text-indent: 55px;padding-top: 58px;font-size: 8pt;letter-spacing: 1px;font-family: Arial;color: #E5DA95;font-weight: bold;position: absolute;text-decoration: none">-</span>
<span style="text-indent: 59px;padding-top: 58px;font-size: 8pt;letter-spacing: 1px;font-family: Arial;color: #E5DA95;font-weight: bold;position: absolute;text-decoration: none">92</span>
<img src="https://www.autocheck.com/members/img/freeLinkScore/scoreBanner4.gif" height="75" width="75" border="0">
我使用了语句div.innerHTML = response;
响应显示为文本而不是HTML。有人可以告诉我如何在div中显示响应为html。
答案 0 :(得分:1)
设置元素的innerHTML
属性不会导致该内容被编码;它的目的是专门用于在元素中获取和设置 HTML 。
如果响应是html编码,请仔细检查您从服务器获取的实际响应文本,并确保它没有在服务器端编码。您看到的响应可能只是文本的HTML呈现版本,这可以解释您如何看到三角括号而不是实际的html编码文本。
答案 1 :(得分:1)
如果这是您的网络服务,请将其更改为输出未经HTML编码的响应。
否则,在将响应设置为内容之前,您必须对响应进行HTML解码。 我找了一个轻量级的解码器,找不到比简单正则表达式更强大的解码器。
所以,这可能会满足您的直接需求,请注意它可能会破坏某些内容组合(在这种情况下似乎不太可能)。
response = response.replace (/</ig, '<').replace (/>/ig, '>');
。
PS:请确保此网络服务器无法为您提供恶意html,例如<script>
标记。
答案 2 :(得分:0)
将div.innerHTML设置为类似
的内容<span style="text-indent: 29px;padding-top:35px;font-size: 16pt;font-family: Arial;color: #FFFFFF;font-weight: bold;position: absolute;text-decoration: none;">89</span>
不会起作用,因为该文本不是html编码的,所以javascript正在处理引号,如转义序列。如果是html编码,您会看到"
代替引号。要对其进行编码,您应该能够使用Server.HtmlEncode方法。
答案 3 :(得分:0)
您可以分两步完成此操作:
div.innerHTML = response;
var htmlstring=div.innerText||div.textContent;
div.innerHTML=htmlstring;