强制Tampermonkey延迟运行/执行脚本

时间:2013-08-01 13:33:00

标签: javascript ajax tampermonkey

如何在AJAX加载的每个文档后强制Tampermonkey运行/执行脚本?

我希望在我的脚本中访问这些元素并进行更改。但是,即使我在设置页面中将@run-at设置为document-end,它也会在文档未完全加载时执行。 而且,它发生在这个特定的网站!

我试过这些方法,但没有成功:

  1. Onload event。
  2. 我尝试while语句来检查是否所有文档都已加载,然后继续执行我的脚本但它崩溃并陷入无限循环。
  3. 我试过控制台来执行一个功能(但是控制台无法访问)。
  4. 那我该怎么办?

1 个答案:

答案 0 :(得分:3)

您想要的内容由AJAX加载,因此您需要在脚本中使用AJAX-compensation techniques

最简单的方法是使用waitForKeyElements()。类似的东西:

// ==UserScript==
// @name     _YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/

waitForKeyElements (
    "jQUERY SELECTOR TO THE NODE(S) YOU WANT",
    changeFontColor
);

function changeFontColor (jNode) {
    jNode.css ("color", "red");
}