AJAX-generated & lt; tr>变成只是文本内容在firefox/chrome

AJAX-generated <tr> becomes just the text content in firefox/chrome

本文关键字:chrome 文本 firefox tr lt AJAX-generated      更新时间:2023-09-26

首先,我通过AJAX请求一些HTML。示例响应:

<tr class="recordRow">
  <td class="first recordType" id="recordType">holder</td>
  <td class="recordAmount" id="recordAmount">holder</td>
  <td class="recordDescription" id="recordDescription">holder</td>
  <td class="last recordDate" id="recordDate">holder</td>
</tr>

我正在尝试创建一个DOM对象。

var d = document.createElement("div");
d.innerHTML = templateListItem;
alert(d.innerHTML);
alert(d.firstChild);

我认为这应该添加行到<div>,但我只得到文本。当我将响应附加到一个元素时,我只得到文本内容,例如holder holder holder holder

为什么HTML似乎在firefox和chrome中被压扁了?

补充道:如果示例响应如下:

<tr><td><span>something here..</span></td></tr>

它会在firefox中提示"HTMLSpanElement"。所有像tr/td/这样的标签都被删除。

如果您试图将<tr>插入<div>,则浏览器可能无法正确呈现此内容,因为它是非法的HTML。试着将<tr>放到<table>元素中,或者将<tbody>元素嵌套在<table>元素中。

如果您从某个服务器拖拽响应,它将只是文本,正如您所发现的那样。如果可以,您可以更改AJAX代码以返回JSON,解码并将其转换为对象。

关于标签被删除,我在某处读到浏览器这样做,但这很可能是错误的;在这种情况下,AJAX将惨败。

如果您的XHR实例是var xhr = new XMLHttpRequest(),请确保使用xhr.responseXML而不是xhr.responseText