【发布时间】:2014-08-27 11:02:19
【问题描述】:
我目前正在开发一个 Chrome 扩展程序,它需要一种获取光标下单词的方法。我发现的一个常见解决方案是用标签包装 html 中的每个单词。但是,这样做会删除任何以前的 HTML,从而删除所有样式和超链接。我使用this answer中的以下代码sn-p递归地将span添加到str中的每个单词,但是当网页上出现不同的格式时仍然有很多情况它失败。
var regex = /(\(*<.+?<\/.+?>|\S+)/g;
var spannedStr = str.replace(regex, function(a) {
var m = (/<(\w+)([^>]*)>([^<]*)<\/\w+>/).exec(a);
if (m !== null) {
return "<" + m[1] + m[2] + ">" + m[3].replace(regex, arguments.callee) + "</" + m[1] + ">";
}
return "<span class = \"toTranslate\">" + a + "</span>";
});
我查看了其他一些 Chrome 扩展,其中一个似乎能够检索光标下的单词,而无需将 span 标签注入 html 中的每个单词。我的问题是:还有另一种方法可以找到光标下的单词吗?或者有没有更好的方法将单词包装在不干扰原始 html 样式和超链接的 span 中?
【问题讨论】:
标签: javascript jquery html google-chrome-extension