从greasemonkey wiki页面,有一个使用带有greasemonkey的jQuery的例子。代码如下所示,页面位置为http://wiki.greasespot.net/Third-Party_Libraries#jQuery
// ==UserScript==
// @name jQuery Example
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
// Append some text to the element with id someText using the jQuery library.
$("#someText").append(" more text.");
此示例脚本直接修改DOM。我是否需要使用jQuery function
这样的代码包围代码:
// ==UserScript==
// @name jQuery Example
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
// Append some text to the element with id someText using the jQuery library.
jQuery(function(){
$("#someText").append(" more text.");
})
我问这个问题是因为每次刷新页面时都不会执行我的greasemonkey代码。有关这个问题的任何想法? 感谢。
答案 0 :(得分:3)
不,没有必要在jQuery()
电话中包装您的脚本代码,也不能使用$(document).ready ()
。
Greasemonkey在DOMContentLoaded
事件(与jQuery包装器或ready事件相同)之后以及加载GM的jQuery版本后自动触发。
另请注意,该Wiki页面已过时。 GM现在可以正常使用jQuery 1.6.2。
您没有显示相关代码,也没有链接到目标网页,但最可能的原因是“每次页面都不会执行Greasemonkey代码刷新“是:
GM脚本中存在错误。
目标内容通过AJAX单独加载 您可以使用此模式中的代码来解决这个问题:
//--- This handles both page-load delays, and AJAX changes.
setInterval (function() { checkForTweetbox (); }, 500);
function checkForTweetbox () {
var tweetbox = document.querySelector ('div.tweet-box textarea');
if (tweetbox) {
if (! tweetbox.weHaveProcessed) {
tweetbox.weHaveProcessed = true;
alert ('New tweet-box found!');
}
}
}