2016-05-16 4 views
0

Я использую эту учетную запись в Firefox, которая учитывает непрочитанные твиты в Tweetdeck и раскрашивает новые твиты.Код пользователя работает в Firefox, но не в Chrome? (unsafeWindow)

Он отлично работает с 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); 

Любая помощь с этим очень ценная. Thanks Bob

+0

Это было рассмотрено в других вопросах. Но нижняя строка для вашего скрипта здесь, так как вы используете '@grant none': (1) замените все' unsafeWindow.' на 'window.'. (2) Убедитесь, что пользователи Chrome установлены и используют Tampermonkey. ... Ваш скрипт требует инъекции, если вы пытаетесь использовать чистый Chrome - это плохая идея. –

+0

Спасибо за отзыв Брок, он отлично работает в Chrome. – BobC

+0

Добро пожаловать. Он также по-прежнему работает в Firefox, не так ли? ;) –

ответ

-1

IIRC объект unsafewindow специфичен для Mozilla Firefox и не поддерживается в Google Chrome.
Вместо использования unsafewindow вы можете экспортировать свои функции, используя функцию exportFunction: https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.exportFunction

+0

Неправда. Chrome поддерживает unsafeWindow, но поведение отличается. Кроме того, не требуются никакие функции unsafeWindow или экспорта с эффектом '@grant none'. –

 Смежные вопросы

  • Нет связанных вопросов^_^