繁体   English   中英

使用jQuery的Greasemonkey,如何编写隔油纸脚本来修改页面DOM元素?

[英]Greasemonkey with jQuery, how to write the greasemonkey script to modify page DOM elements?

在oilmonkey维基页面上,有一个示例将jQuery与oilmonkey一起使用。 下面列出了代码,页面的位置为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将代码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.");   
})

我问这个问题是因为每次刷新页面时都不会执行我的oilmonkey代码。 关于这个问题有什么想法吗? 谢谢。

不,没有必要将脚本代码包装在jQuery()调用中,也没有使用$(document).ready ()

DOMContentLoaded事件(与jQuery包装器或ready事件相同)之后,以及在加载GM的jQuery版本之后,Greasemonkey都会自动触发。

另请注意,该Wiki页面已过时。 GM现在可以与jQuery 1.6.2一起正常工作。

您没有显示相关代码 ,也没有链接到目标页面 ,但是“每次刷新页面时都不会执行Grasemonkey代码”的最可能原因是:

  1. GM脚本中有错误。

  2. 目标内容通过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!'); } } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM