Ale*_*lec 7 jquery gmail greasemonkey
我正在尝试使用GreaseMonkey脚本向Gmail添加一些jQuery内容.添加jQuery功能工作正常,但问题是我无法真正检测Gmail何时完成加载.
这基本上是发生的事情:
此时,一堆JavaScript已加载到DOM中,可能会调用一些使用AJAX加载视图其余部分的函数.
我希望jQuery 在第8步之后完成任务,当时所有内容都已完成加载.
有谁知道如何做/检测这个?
首先,你可以向Google大吼大叫,修复他们的gmail-greasemonkey API - 这似乎每天都会破坏更多.具体来说,registerViewChangeCallback()将促进解决方案,但似乎已停止正常工作.
解决方法是延迟启动主要文档更改.在Firefox上,以下代码似乎对我有用.可能需要调整iFrame内容.
//
// ==UserScript==
// @name Fire on page finished (with AJAX mods)
// @namespace Gmail
// @description This script shows one way to wait for an AJAX-heavy page to load.
// @include http://mail.google.com/*
// @include https://mail.google.com/*
// ==/UserScript==
//
if (window.top != window.self) //don't run on frames or iframes
return;
var zGbl_PageChangedByAJAX_Timer = '';
window.addEventListener ("load", LocalMain, false);
function LocalMain ()
{
if (typeof zGbl_PageChangedByAJAX_Timer == "number")
{
clearTimeout (zGbl_PageChangedByAJAX_Timer);
zGbl_PageChangedByAJAX_Timer = '';
}
document.body.addEventListener ("DOMNodeInserted", PageBitHasLoaded, false);
}
function PageBitHasLoaded (zEvent)
{
if (typeof zGbl_PageChangedByAJAX_Timer == "number")
{
clearTimeout (zGbl_PageChangedByAJAX_Timer);
zGbl_PageChangedByAJAX_Timer = '';
}
zGbl_PageChangedByAJAX_Timer = setTimeout (function() {HandlePageChange (); }, 666);
}
function HandlePageChange ()
{
removeEventListener ("DOMNodeInserted", PageBitHasLoaded, false);
alert ('Page has finished loading.');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |