我正在尝试制作一个chrome扩展程序,在页面上找到某些单词并将其转换为超链接。例如,如果我访问的网站上有"搜索"写在某个地方,然后该单词将变成我可以点击的链接(它仍然会显示为单词但可能是不同颜色或其他内容)并被重定向到" www.google.com"。
我有一个代码可以查找单词并将其更改为其他单词,但我不知道如何将它们更改为超链接。这是我的JavaScript:
walk(document.body);
function walk(node)
{
var child, next;
switch ( node.nodeType )
{
case 1:
case 9:
case 11:
child = node.firstChild;
while ( child )
{
next = child.nextSibling;
walk(child);
child = next;
}
break;
case 3:
handleText(node);
break;
}
}
function handleText(textNode)
{
var v = textNode.nodeValue;
v = v.replace(/\bsearch\b/g, (str.link("https://www.google.com")));
v = v.replace(/\bsearch\b/g, <a href="http://www.google.com">asdf</a>);
textNode.nodeValue = v;
}
有人可以帮助我吗?
答案 0 :(得分:0)
将HTML解析为DOM,这就是您要遍历的内容。您并没有真正替换DOM,而是使用未解析的HTML替换文本节点,而这些HTML不会起作用。相反,您需要将文本节点替换为具有所需URL和文本的<a>
节点。
答案 1 :(得分:0)
您必须使用已解析的HTML元素替换文本节点。
更改
monolog:
use_microseconds: false
handlers:
main:
type: rotating_file
path: '%kernel.logs_dir%/%kernel.environment%.log'
level: error
max_files: 14
类似
textNode.nodeValue = v;
此外,请确保在遍历DOM时忽略锚点(node.tagName ==='A'),否则您最终可能会替换现有锚点内的文本。