自动超链接某个单词(或单词序列)的每个出现到预定义的URL(非模糊);但不显示完整的URL

时间:2015-02-08 19:06:59

标签: javascript wikipedia

类似于: Search For Words, Replace With Links。但是,我不希望看到完整超链接的URL,而是只有最终用户可见的超链接外观。 ---我也无法弄清楚如何使用replace() - JS函数,就像在以下帖子中使用的那样:How to replace all occurrences of a string in JavaScript?,对于同一个特定问题。 ---也类似于JS问题:Link terms on page to Wikipedia articles in pure JavaScript,但我想那里给出的答案不能预先区分不明确的术语。

如何将单个单词单词序列的每个出现自动链接到各自的预定义URL?

在(a)某些HTML页面中,是否可以:

  • 手动预定义;或自动(Cf: Wiki-api )单个单词列表及其各自的(i.c. Wikipedia)-articles;
  • 使文档中的每个(此类耦合)单词自动接收到相应(i.c. Wikipedia)-article的预定义链接。

实施例

(1)无论 cell 这个词出现在哪里,这个词都应该收到链接:...wiki/cell,以得到以下结果:a {{3} }只是cell


所以,我真正想要的是模仿任何cell内部实际发生的事情(尽管我不知道这是否在那里自动化)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

从您关联的问题开始,修改它以实现目标非常容易。首先假设我们有一个这样的短语和链接列表:

var words = [
    { word: 'foo', link: 'http://www.something.com' },
    { word: 'Something Else', link: 'http://www.something.com/else' ]
];

我们可以迭代该列表替换文档中的任何匹配项,但包括我们正在插入的文本中搜索的单词。我也在工具提示中添加了一个示例,说明您还可以做些什么。

$(function() {
    $.each(words,
        function() {
            var searchWord = this.word;
            var link = this.link;
            $('body:contains("' + searchWord + '")').each(function() {
                var newHtml = $(this).html().replace(searchWord, 
                    '<a class="wikilink" title="here is a link to Wikipedia" href="'+link+'">' + searchWord + '</a>');
                $(this).html(newHtml);
            });
        }
    );
});

一个有效的例子:http://jsfiddle.net/yxhk1fcd/10/