我正在制作一个带有HTML + JS的Windows 8应用程序,并且有一个用户可以输入一些数据的字段,当他们重新访问页面时,我设置<div>
等于他们的输入。他们可能会输入一个URL,因此我想将其转换为链接。我读过的每个例子都有关于将它封装在标签中的说明,但是当我将文本写入div时,我使用&#34; div.innerText&#34;而不是&#34; div.innerHTML&#34;如果用户将不正确的HTML写为数据,然后导致应用程序崩溃。
无论如何,我可以安全地防止用户输入错误的HTML并且文本中仍然有超链接吗?
答案 0 :(得分:2)
您需要escape user data first,然后replace URLs with links并使用innerHTML属性将数据写入元素
答案 1 :(得分:1)
您可以执行此操作,使用innerHTML
将链接替换为链接。
// ... first write to element.innerText if you want to then:
var url_regex = /(\b(https?|ftp|file):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/ig;
element.innerHTML = element.innerHTML.replace(url_regex, "<a href=\"$1\">$1</a>");