0

我想在不丢失 ASCII 字符的情况下将带有 CR 和制表符的文本(假设代码在 var shtml中)显示到 iframe 中。

<!--var shtml-->
<HEAD>
</HEAD>
<BODY style="FONT-SIZE: 12.5pt">
   mmm
</BODY>

我的 iframe

<iframe rows="5" cols="60" id="tahtml">
</iframe >

我的JS

document.getElementById('tahtml').textContent = shtml; //innerText = shtml;

在此处输入图像描述

如果我使用 . innerText然后代码(shtml)在 Firefox 中解释。如果我使用 . textContent代码(shtml)不显示 ASCII 字符。jQuery . text()与 .textContent 相同。

4

1 回答 1

1

就像<input>a<textarea>的 DOM 接口 ( HTMLTextAreaElement ) 有一个value 属性,看起来您想将此属性设置为shtml.

document.getElementById('tahtml').value = shtml;

演示


为在其中加载的页面<iframe>制作MIMEtext/plain。这可以通过例如获取一个空文件.txt或将src设置为data:text/pain,. 然后您可以执行以下操作

// don't collapse whitespace, only needed to be done once
ifrmDoc.documentElement.style.whiteSpace = 'pre';
// set text
ifrmDoc.documentElement.innerHTML = shtml;

在哪里

var ifrm = document.getElementById('tahtml'),
    ifrmDoc = ifrm.contentDocument || ifrm.contentWindow.document;

当然,你也可以通过

  • 将整个内容写为dataURI并将其作为src传递
    ifrm.src = 'data:text/pain,' + window.encodeURIComponent(shtml);
  • 使用 DOM 方法和文本节点附加您的文本
    ifrmDoc.body.appendChild(ifrmDoc.createTextNode(shtml))
    (这仍然需要whiteSpace: pre;
  • 在您的 中制作一个<textarea><pre>,您分别将其作为或文本节点<iframe>放入其中。shtml
于 2013-05-30T15:09:33.167 回答