我在我的asp.net应用程序中使用模态窗口。在单击按钮时,我执行一些服务器端处理,然后使用cs.RegisterStartupScript关闭窗口并将值返回到父窗口。为此,我使用RegisterStartupScript来运行window.close。
现在我遇到的问题是我想向父母发送一个返回值(一个字符串)。但由于字符串是用户输入的文本,可以包含任何字符,我需要转义所有字符。没有它,我无法将返回值发送给父级。
这是导致失败的脚本(错误消息: 未终止的字符串常量 你想继续在这个页面上运行脚本吗?)
StringBuilder saveScript = new StringBuilder();
saveScript.Append("var template = new Object();");
saveScript.AppendFormat("template.DescriptionPlainText = \"{0}\";",description);
saveScript.Append("window.returnValue = template;");
saveScript.Append("window.close();");
cs.RegisterStartupScript(typeof(myPageType), scriptName, saveScript.ToString(), true);
description是一个字符串。
然而,这成功了
StringBuilder saveScript = new StringBuilder();
saveScript.Append("var template = new Object();");
saveScript.AppendFormat("template.DescriptionPlainText = \"{0}\";","xx");
saveScript.Append("window.returnValue = template;");
saveScript.Append("window.close();");
cs.RegisterStartupScript(typeof(myPageType), scriptName, saveScript.ToString(), true);
答案 0 :(得分:1)
如果您为了Javascript使用而逃避用户输入description
,那么它应该可以正常工作。
答案 1 :(得分:0)
考虑使用AntiXss library来编码Html / JavaScript消费的文本。查看older article on AntiXss并获得更多指导。
AntiXss.JavaScriptEncode("r'\"a&<>dom!");