如何使用某些文本初始化textarea内容

时间:2014-01-21 18:26:36

标签: javascript ruby

在Ruby中编写HTTP服务器,我需要在浏览器中编辑一个使用某些源代码(HTML,JavaScript和Ruby)的文件。我需要将任何文本文件内容放在textarea的值中:

"<textarea>__CONTENT__</textarea>".gsub('__CONTENT__',File.read(filename)) 

但是,如果文件包含一些特殊的子标记,例如</textarea>,则不起作用。所以我尝试通过在文件内容中进行某些替换来“准备”数据。但是,如果文件包含带有HTML / Ruby内容的源代码,则会出现问题,特别是如果我尝试发送HTTP服务器的源代码。这一系列替代品似乎很好:

File.read(__FILE__).gsub(/&/,"&amp;").gsub('<',"&"+"lt;").gsub('>',"&"+"gt;")

然而,这还不够好。当文件包含\'时,存在问题(在Web浏览器中)!是否有一种有用的技术可以在textarea(服务器端和/或浏览器端)中放置任何文本?

2 个答案:

答案 0 :(得分:1)

CGI::escapeHTML将“准备”字符串为HTML安全。

# require 'cgi'
CGI::escapeHTML(File.read(__FILE__))

答案 1 :(得分:0)

这种形式很好: CGI :: escapeHTML(File.read(的文件))

除了反斜杠字符:双反斜杠变得简单。

我发现: 服务器端,用&amp; 99992;

替换反斜杠
CGI::escapeHTML(File.read(@uri).gsub('\\','&9999'+'2222;'))

浏览器方面,替换textarea“&amp; 99992222;”用反斜杠字符:

var node=document.getElementById('textarea_1');
node.value=node.value.replace(/\&9{4,4}2{4,4};/g,String.fromCharCode(92));

跳出没有来源&amp; 99992222; !