我目前正在开发Chrome扩展程序,需要一种方法来获取光标下的单词。我找到的一个常见解决方案是用标签包装html中的每个单词。但是,这样做会删除任何以前的HTML,从而删除所有样式和超链接。我使用this answer中的以下代码片段以递归方式为 str 中的每个单词添加span,但仍有许多情况下,当网页上出现不同的格式时,它会失败。
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样式和超链接的跨度?
答案 0 :(得分:0)
请参阅此问题的最高投票(而不是接受)答案 - 我认为这可能会引导您朝着一个有效的方向前进:How to get a word under cursor using JavaScript?