我的目标是遍历一组给定的元素,并用链接正则表达式替换内部 HTML,这样我就可以将 HTML 文本转换http://*.*/*
为<a href="http://*.*/*" target="_blank">http://*.*/*</a>
所以我正在运行一些香草javascript:
for (var i = 0; i < document.getElementsByClassName('title').length; i++) {
var title = document.getElementsByClassName('title')[i]
title.innerHTML = title.innerHTML.replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a target='_blank' href='$1'>$1</a>")
}
这只是我正在使用的正则表达式:
/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig
那么,到底为什么这个循环会导致浏览器挂起呢?循环的文本不超过 256 个字符,通常有 5 到 30 个.title
元素,绝对不是会导致浏览器崩溃/挂起的数据级别。我只在 Chrome/Safari 中体验过,不确定它是否发生在 Firefox/Opera 中。