var name = "Joe O'Neal";var row= [];row.push( "<td><input type='hIDden' name='milestones[" + ID + "].name' value='" + name + "' class='currentRowname' /> <span class='currentRownameText'>" + name + "</span></td>")
但问题是我有一个名称变量中有撇号的情况,所以它导致了这个问题:
value='" + name + "'
写这个的正确方法是什么,以避免与撇号发生冲突?在C#中,我会做类似的事情
value=\"" + name + "\"
但这似乎不适用于JavaScript
解决方法 您要做的是清理您的输入.为此,您可以定义一个帮助器方法,用Unicode等效或HTML实体替换任何不安全的字符.这种东西不仅用于逃避报价,还可以帮助防止像 XSS Attacks这样的事情.短期修复
以下内容于Escaping HTML strings with jQuery改编自Tom Gruner’s answer的另一个问题.
var entityMap = { "&": "&","<": "<",">": ">",'"': '"',"'": ''',"/": '/'};function escapeHTML(string) { return String(string).replace(/[&<>"'\/]/g,function (s) { return entityMap[s]; });}
然后使用它,您将执行以下 *** 作:
var name = "Joe O'Neal";var safe_name = escapeHTML(name);var row= [];row.push( "<td><input type='hIDden' name='milestones[" + ID + "].name' value='" + safe_name + "' class='currentRowname' /> <span class='currentRownameText'>" + safe_name + "</span></td>");
长期解决
如果您发现自己这么做了,那么可能是时候开始使用可以自动执行此 *** 作的模板库了.我推荐并发现有用的一个模板库是@L_403_3@.它是一个企业级模板库,默认情况下会清理你的HTML.
有关Closure模板如何帮助保护您的更多信息,您可以查看他们在security页面上的页面.
总结以上是内存溢出为你收集整理的在构建html时,在javascript中支持撇号的正确方法是什么?全部内容,希望文章能够帮你解决在构建html时,在javascript中支持撇号的正确方法是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)