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

Javascript 如何使用一些文本初始化textarea内容,javascript,ruby,Javascript,Ruby,在用Ruby编写HTTP服务器时,我需要在浏览器中编辑一个使用特定源代码(HTML、JavaScript和Ruby)的文件。我需要将任何文本文件内容放入textarea的值中: "<textarea>__CONTENT__</textarea>".gsub('__CONTENT__',File.read(filename)) “\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

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

"<textarea>__CONTENT__</textarea>".gsub('__CONTENT__',File.read(filename)) 
“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
但是,如果文件包含一些特殊的子字符串,例如
,则这不起作用。因此,我试图通过对文件内容进行某些替换来“准备”数据。但是,如果文件包含包含HTML/Ruby内容的源代码,尤其是如果我试图发送HTTP服务器的源代码,则会出现问题。这一系列替代品似乎不错:

File.read(__FILE__).gsub(/&/,"&amp;").gsub('<',"&"+"lt;").gsub('>',"&"+"gt;")
File.read(uuu文件).gsub(/&/,“&;”).gsub(“,”&“+”gt;”)
然而,这还不够好。当文件包含
\'
时(在web浏览器中)会出现问题!在文本区域(服务器端和/或浏览器端)中放置任何文本是否有一种有用的技术?

将“准备”字符串以确保HTML安全

# require 'cgi'
CGI::escapeHTML(File.read(__FILE__))
这个表格很好: CGI::escapeHTML(File.read(File

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

我发现: 服务器端,将反斜杠替换为&99992

CGI::escapeHTML(File.read(@uri).gsub('\\','&9999'+'2222;'))
浏览器端,在文本区域“&9992222;”中替换为反斜杠字符:

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

希望没有使用&992222;的来源

您可以将textarea对象的值设置为js中的任何内容,但您不能将“”硬编码到html中。您可以将其插入Escape中,然后使用js在页面上取消其显示吗?您需要澄清您的问题-您可能在前端(web浏览器)使用JavaScript,在后端(Rails?)使用Ruby但是这对你的问题有什么影响还不清楚。这很好,但是双反斜杠被简单的反斜杠所取代:如果结果是作为Javascript字符串发送的(也就是说,由Javascript解析,而不是纯HTML源代码),那么是的,当Javascript解析字符串时,它将取消反斜杠。在这种情况下,在发送字符串之前,还应将反斜杠替换为双反斜杠。