2010-03-14 68 views
3

我写了一个userscript突出显示GMail中的当前行(由箭头指示)。不幸的是,突出显示只会保留到GMail收件箱自动刷新,这经常发生。有没有办法抓住这个事件,所以我可以重新应用突出显示?我不想在超时时间完成。还有另一个脚本,它会加载CPU。如何捕捉GMail自动刷新

+0

有人建议在其他地方使用DOMNodeInserted,但我知道它只会火起来的时候有一个新的消息。 – ultracrepidarian 2010-03-14 01:08:42

回答

2

这听起来像你会想要审查this document which is documentation for the Gmail gmonkey API,这是一个谷歌提供的greasemonkey脚本的API。

This page describes a userscript which monitors view changes,这应该是非常类似于你所需要的。

我想你也需要这样的:而不是一个userscript

window.addEventListener('load', function() { 
    if (unsafeWindow.gmonkey) { 
    unsafeWindow.gmonkey.load('1.0', function(gmail) { 
     function changedViewType() { 
     // Threadlist 
     if(gmail.getActiveViewType()== "tl"){ 
      // code to highlight the current row here... 
     } 
     } 
     gmail.registerViewChangeCallback(changedViewType); 
     changedViewType(); 
    }); 
    } 
}, true); 
+0

我终于开始检查这个,它不起作用。该页面上的示例脚本,Gmail View Watcher也不例外。 – ultracrepidarian 2010-04-05 11:38:07

+0

Gmail Greasemonkey API被放弃?请参阅http://code.google.com/p/gmail-greasemonkey/issues/detail?id=39 – ultracrepidarian 2010-04-06 17:50:53

1

如果添加一个计时器并查看突出显示元素何时消失?或者如果父对象更改其地址(使用===)。

+2

是的,这就是我说我不想要做的 - 使用计时器。尝试一下,你会发现CPU使用率徘徊在50%以下。 – ultracrepidarian 2010-03-15 07:44:27

0

考虑CSS userstyle(http://userstyles.org/)。您可以使用Firefox的DOM检查器查看所选行中的HTMl元素和类,然后编写一个只选择该行的CSS选择器应该非常简单。

+0

ryan,问题是如何捕捉事件。我选择一行没有问题。 – ultracrepidarian 2010-09-21 14:52:14

0

从今天开始,以下代码不能用于当前gmail用户界面,积分从gmail plugin取自https://cleverinsert.com/。每次收件箱刷新时都会触发回调。您必须在文档完全加载后创建MutationSummary。你可以在chrome中安装和调试他们的插件来检查它。

你必须包括mutation-summary.js

new MutationSummary({ 
    callback: render, 
    rootNode: document.querySelector('.AO'), 
    observeOwnChanges: false, 
    oldPreviousSibling: true, 
    queries: [ 
     { element: 'td.xW' } 
    ]}); 

function render(a) { 
    console.log("callback triggered");   
}