javascript - Greasemonkey与jQuery,如何编写greasemonkey脚本来修改页面DOM元素?

标签 javascript jquery dom greasemonkey

从greasemonkey wiki 页面,有一个使用jQuery 和greasemonkey 的示例。下面列出了代码,页面位置为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 函数 包围代码,如下所示:

// ==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代码没有在每次刷新页面时执行。关于这个问题有什么想法吗? 谢谢。

最佳答案

不,将脚本代码包装在 jQuery() 调用中,或者使用 $(document).ready () 都是没有意义的。

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

另请注意,该 wiki 页面已过时。 GM 现在可以很好地使用 jQuery 1.6.2。

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

  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!');
            }
        }
    }
    

关于javascript - Greasemonkey与jQuery,如何编写greasemonkey脚本来修改页面DOM元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7283923/

相关文章:

jquery - 如何在 JQuery 旋钮中更改字体大小

javascript - AngularJS - 将拖放与流程图相结合

jquery - 每个用户/浏览器 session 仅显示一次欢迎 div

javascript - Chrome 丰富通知 - 如何使用

javascript - 尝试使用 Javascript 删除元素

javascript - 按另一个按钮触发鼠标单击

javascript - 限制 Metro-ui datetimepicker 中的过去日期

javascript - 在 JSON 对象的 html 页面上的 ListView 中显示图像和描述

javascript - 找出 HTML 表格中的哪一行被点击

javascript - CKEditor 从选择中删除选项