【问题标题】:How to catch GMail auto-refresh如何捕捉 GMail 自动刷新
【发布时间】:2010-03-14 01:03:52
【问题描述】:

我写了一个userscript 来突出显示GMail 中的当前行(由箭头指示)。不幸的是,亮点只会一直存在,直到 GMail 收件箱自动刷新,这种情况经常发生。有没有办法捕捉该事件,以便我可以重新应用突出显示?我不想在超时时这样做。还有另一个用户脚本可以做到这一点,它会加载 CPU。

【问题讨论】:

  • 有人建议在其他地方使用 DOMNodeInserted,但我知道它只会在有新消息时启动。

标签: javascript jquery events gmail greasemonkey


【解决方案1】:

在我看来,您会想要查看 this document which is documentation for the Gmail gmonkey API,这是 google 为greasemonkey 脚本提供的 API。

This page describes a userscript which monitors view changes,这应该和你需要的很相似。

我假设你会想要这样的东西:

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);

【讨论】:

【解决方案2】:

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

【讨论】:

  • 是的,这就是我说我不想做的——使用计时器。试试看,你会发现 CPU 使用率徘徊在 50% 以下。
【解决方案3】:

考虑使用 CSS 用户样式 (http://userstyles.org/) 而不是用户脚本。您可以使用 Firefox 的 DOM 检查器来查看所选行中的 HTMl 元素和类,然后编写一个仅选择该行的 CSS 选择器应该非常简单。

【讨论】:

  • ryan,问题是如何捕捉事件。选择一行没有问题。
【解决方案4】:

截至今天,以下代码确实适用于当前的 gmail 用户界面,学分转到https://cleverinsert.com/,取自他们的gmail plugin。每次刷新收件箱时都会触发回调。您必须在文档完全加载后创建 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");           
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2010-10-11
    • 2017-06-19
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多