簡體   English   中英

如何在IE8中使用JavaScript替換換行符?

[英]How can I replace newline characters using javascript in IE8?

我已經搜索了數小時的Stackoverflow,但沒人能在Internet Explorer 8中找到解決方案。

我收到了像這樣的純文本文檔:

This is a legal agreement ("Agreement") between you and ...
License
Subject to you continued and ongoing compliance with the terms and conditions set ...
Restrictions
Except as otherwise explicitly provided in this Agreement, ...
Ownership
Except for this license granted to you, as between you and ...
Disclaimer of Warranties
Use at your own risk. ...

而且我需要用雙換行符( <br/><br/> )替換換行符(換行符,回車符,無論您想稱呼它們什么),以使文本看起來更普通。

jQuery的nl2br函數將換行符轉換為br(等效nl2br),在大多數瀏覽器中都能正常工作。 但是,我的客戶使用IE8。

繼續嘗試使用IE8(或設置為IE8模式的現代Internet Explorer)使用nl2br函數; 它不起作用。

有誰知道為什么它在IE8中不起作用? 以及如何實現目標?

PS我在這里http://jsfiddle.net/L2Ufj/2/放了一些代碼 ,奇怪的是它可以通過jsfiddle在IE8中工作,但是如果將其復制到其他地方並真正運行它,它將無法在IE8中工作。

在IE8中解決此問題的一種方法是將換行符轉換為IE8 呈現在頁面上之前可以識別的“令牌”。 然后,一旦渲染完成,例如,在成功處理程序中,您可以搜索該令牌並替換為<br>或所需的任何內容:

例如

渲染前(我已經使用<br>作為令牌,但是您可以使用任何東西)

textToEdit = textToEdit.replace(/\n/g, '<br>');

發布渲染(搜索令牌並替換為<br>或您想要的任何符號)

renderedTextWrapper.innerHTML = renderedTextWrapper.innerHTML.replace(/&lt;br&gt;/g, '<br>');

當您檢索元素的innerHTML時,IE會在將結果提供給您之前將innerHTML轉換為“標准格式”(通過將多個空格折疊為一個,刪除換行符等)。

因此,您無法在通過IE獲得的innerHTML中找到任何換行符。 真是個壞消息。

我認為最可行,最簡單的方法是將文本存儲在<textarea>標記內,而不是普通的<div> 當您獲得<textarea>的值而不是innerHTML時,IE將<textarea>會它:

originalText=document.getElementById('EULA_content').value

當然,當您獲得newText時,應將其附加到另一個div元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM