我需要使用用户提供的某些文本在javascript中创建一个字符串。当我尝试运行此行时:
var str = new String('<%= @note.text %>')
我收到未终止的字符串文字错误。鉴于我无法控制输入的内容,并且我无法分配字符串以开始进行任何字符替换,如何解决此问题?谢谢你的阅读。
答案 0 :(得分:1)
您不能将任意文本放入JS中,并且能够从错误中恢复。
您必须在将数据放入文档之前清理数据。我不知道为什么你认为你不能这样做,但你需要删除阻止它的任何障碍。
答案 1 :(得分:1)
您无法在客户端执行任何操作,您需要清理服务器上的字符串。鉴于您通过&lt;%=%&gt;将文字放入String构造函数中,我假设您使用的是各种各样的ASP.Net。
我确信有更优雅的方法可以做到这一点,但这应该是编码字符串以便在JavaScript中使用的第一步。这并没有试图解决将任意字符串传递给JavaScript的相对优点。 (对于大多数情况,很可能会对恶意字符串进行一些服务器端检查。)
假设note是一个文本输入字段,这样的东西可能会起作用....
// New Property in your code behind
public string outputText {get; private set;}
在OnLoad()中,添加
// Encode the string
string tempText = Note.Text
outputText = String.empty;
foreach( char character in tempText)
{
// Prefix quotation mark with a backslash,
if(char == "\"")
outputText += "\\\"";
// Prefix apostrophe with a backslash,
else if(char == "'")
outputText += "\\'";
// convert newline to a literal.
else if(char == "\n")
outputText += "\\n";
else
outputText += character;
}
最后,在你的.aspx
中var str = new String('<%= outputText %>')