2014-09-23 72 views
0

我希望能够将我选择的任何单词链接到特定网址,例如: 我希望单词“山羊”在整个网站上链接到“http://goat.com”。因此,所有“山羊”都将链接到网站上的该URL。在整个网站上为特定单词添加网址

我使用wordpress,我还没有找到一个插件来做到这一点。如果我能得到解决方案,我很可能会为此功能创建一个插件。

我知道如何在单个页面上定位一个单词。但我希望它能覆盖所有页面和这些页面中的所有单词(我为此使用了JavaScript)。

回答

1

这里是一个蹩脚的解决方案,但它总比没有好:

我发现了一些代码here这让我复制粘贴这一点,修改了它在整个网页搜索的世界。

replaceWord变量不能包含与word相同的字符串,否则它将无限循环。

var word = " goat", 
 
    replaceWord = " <a href = 'http://goat.com'>goat</a>", 
 
    queue = [document.body], 
 
    curr 
 
; 
 
while (curr = queue.pop()) { 
 
    if (!curr.textContent.match(word)) continue; 
 
    for (var i = 0; i < curr.childNodes.length; ++i) { 
 
     switch (curr.childNodes[i].nodeType) { 
 
      case Node.TEXT_NODE : // 3 
 
       if (curr.childNodes[i].textContent.match(word)) { 
 
        curr.innerHTML = curr.innerHTML.replace(word,replaceWord); 
 
       } 
 
       break; 
 
      case Node.ELEMENT_NODE : // 1 
 
       queue.push(curr.childNodes[i]); 
 
       break; 
 
     } 
 
    } 
 
}
Hello goat 
 

 
<div>Look a goat</div>

+0

这真是太神奇了,非常感谢你!这正是我所期待的!辉煌! – Philip 2014-09-26 08:02:40

+0

我有一个问题同时运行多个这些功能。我给函数单独的​​名称,但问题仍然继续 – Philip 2014-09-26 11:45:39

+0

我认为它应该工作正常,如果你确保队列和curr变量不是全局定义的(在函数范围内定义它们)。 – Mandera 2014-09-26 16:05:01

4

像这样的东西可能适合你。

function replaceWithUri(textToReplace, element){ 
    element.innerHTML = element.innerHTML.replace(textToReplace, '<a href="http://www.' + textToReplace + '.com" >' + textToReplace + '</a>'); 
} 

replaceWithUri('goat', document.getElementsByTagName('body')[0]); 
+0

我没有使用JavaScript太多的经验,我理解你的剧本,但它是一个函数将它不仅被它是在一个按钮或使用的东西以后被解雇?如何使它在页面加载执行 – Philip 2014-09-23 11:37:28

+0

第二部分 replaceWithUri('goat',document.getElementsByTagName('body')[0]); 执行页面正文元素上的字符串“山羊”的功能,以便您可以调整它,但它适合你:) – 2014-09-23 11:39:07

1

这可能是有点资源密集型和替换字不能包含相同的字符串作为词,否则它会永远循环下去。

document.onload = function() { 
 
    var word = " goat", 
 
     replaceWord = " <a href = 'http://goat.com'>goat</a>"; 
 

 
    while(document.body.innerHTML.indexOf(word) !== -1) { 
 
     document.body.innerHTML = document.body.innerHTML.replace(word,replaceWord); 
 
    } 
 
}
Hello goat 
 

 
<div>Look a goat</div>

相关问题