用户脚本代码适用于Firefox但不适用于Chrome? (unsafeWindow)

时间:2016-05-16 00:27:27

标签: google-chrome firefox twitter greasemonkey userscripts

我在Firefox中使用这个用户脚本来计算Tweetdeck中未读的推文并为新推文着色。

它适用于Firefox(Greasemonkey),但在Chrome中我没有得到任何东西。这是代码:

// ==UserScript==
// @name     TweetDeck Unread Notifications
// @include  https://tweetdeck.twitter.com
// @include  https://tweetdeck.twitter.com/*
// @grant    none
// ==/UserScript==
var head, style;
head = document.getElementsByTagName('head')[0];
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = ".tdUnreadUnread { background-color: #444444; }";
head.appendChild(style);

function animate_bg(ele, from, to) {
ele.css("background-color", "rgba(68, 68, 68, " + (from += from > to ? -1 :    1) / 10 + ")");
if (from != to) setTimeout(function () {
    animate_bg(ele, from, to)
}, 20);
}

var counter = 0;
var loadingTime = true;

unsafeWindow.tdUnreadRefresh = function () {
var detail = $(".js-detail-content");
$("article").each(function (i) {
    if (detail.length == 0) {
        if (!$(this).hasClass("tdUnreadUnread")) {
            $(this).addClass("tdUnreadUnread");
            if (!loadingTime) {
                counter++;
                $(this).mouseenter(function () {
                    counter--;
                    $(this).off("mouseenter");
                    animate_bg($(this), 10, 0);
                });
            } else animate_bg($(this), 10, 0);
        }
    }
});

if (counter > 0) {
    document.title = "(" + counter + ") TweetDeck";
} else {
    document.title = "TweetDeck"
       }
}
  unsafeWindow.tdUnreadLoadingOver = function () {
  loadingTime = false;
  }

  setInterval("tdUnreadRefresh()", 1000);
  setTimeout("tdUnreadLoadingOver()", 30000);

非常感谢任何帮助。 谢谢 鲍勃

1 个答案:

答案 0 :(得分:-1)

IIRC对象unsafewindow特定于Mozilla Firefox,Google Chrome不支持。
您可能希望使用exportFunction功能导出函数,而不是使用unsafewindow:https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.exportFunction