如果网站中存在特定文本,如何使用Javascript更改网站的favicon?

3

我试图将谷歌收件箱“固定”页面的网站图标更改为图钉,以便一目了然地知道哪个选项卡是哪个。

我知道可能有扩展程序可以做到这一点,但我正在学习Javascript并尝试自己尝试。我使用“url.indexOf”命令成功更改了其他网站的图标,但是收件箱'Pinned'页面没有更改URL。所以我想编写JavaScript来查找单词“Pinned”,如果找到,则执行Favicon更改操作。这就是我的代码:

    favico = function() {

    this.is_changed = 0;
    this.retry = 1000;
    this.timerFindButtons = null;
    this.list = [
        "foo",
        "bar"
        ];
}

favico.prototype.init = function(){
    setTimeout(this.looping.bind(this), this.retry);
}
favico.prototype.looping  = function(){

    var head = document.getElementsByTagName('head')[0];
    var links = head.querySelectorAll('link');


    var eles = document.querySelectorAll("div");    


    for(var ii=0;ii<eles.length;ii++){
        var foo = eles[ii].getAttribute('jstcache');
        if(foo != null && foo.indexOf('1683') != -1){
            var bar = eles[ii].innerText;
            if(bar.indexOf('Pinned') != -1){
                links[0].setAttribute('href', 'data:image/x-icon;base64,...');
                this.is_changed = 1;}



             else {
                this.is_changed = 0;
                links[0].setAttribute('href', '//ssl.gstatic.com/bt/C3341AA7A1A076756462EE2E5CD71C11/ic_product_inbox_16dp_r2_2x.png');}
        }
    }

    setTimeout(this.looping.bind(this), this.retry);
}


  var oo = new favico()
  oo.init();

我做错了什么?非常感谢任何能够帮助我的人!

1
参见:https://dev59.com/cXVC5IYBdhLWcg3wixs0 - Raptor
出了什么问题?你看到了什么?控制台中有错误吗? - Madara's Ghost
此外,如果你总是在寻找第一个元素,不要使用 querySelectorAll(),而应该使用 querySelector - Madara's Ghost
什么都没有发生,网站图标没有改变。这就是出错的原因 :) 我收到了这个错误信息:Uncaught SyntaxError: Unexpected token } - Tom Odlin
我已经接近编码了,(我想)(请参见编辑后的原始问题)。但它仍然无法工作。现在favicon一直在变。 我不希望这样。只有当出现单词“Pinned”时才更改。 有人能帮我吗? - Tom Odlin
1个回答

1
使用这种方法动态更改网站图标。
(function() {
    var link = document.createElement('link');
    link.type = 'image/x-icon';
    link.rel = 'shortcut icon';
    link.href = 'http://www.stackoverflow.com/favicon.ico';
    document.getElementsByTagName('head')[0].appendChild(link);
}());

火狐浏览器应该可以处理它。

我不确定这是否回答了我的问题。我只想在 div 类中出现“Pinned”一词时更改网站图标。如果我表达不清楚,敬请谅解。 - Tom Odlin
哦,我以为你想通过解析URL来进行更改。我也向你道歉。 - droidev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接