首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AJAX-Request之后加载greasemonkey脚本

如何在AJAX-Request之后加载greasemonkey脚本
EN

Stack Overflow用户
提问于 2009-07-06 10:46:53
回答 2查看 4.8K关注 0票数 3

我有一个简单的greasemonkey脚本,可以进行一些简单的dom操作。greasemonkey脚本是在DOM加载之后加载的,这很好,所以它对初始页面有效。但是在这个站点(它是twitter ;-)上,页面的某些部分在xmlhttprequest单击后加载,而这部分并没有被我的greasemonkeyscript所操纵。

在加载xmlhttprequest或请求更改DOM之后,是否可以再次运行该脚本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-06 12:40:56

谢谢霍华德。这是正确的方向。

很难找到正确的入口点来劫持一个迷你脚本上的函数。但我发现twitter脚本中有一个huck。它在Ajax请求之后调用window.onPageChange。(我想知道这是否是javascript中常见的最佳实践,以及其他人是否也这样做?)我确实在http://userscripts.org/scripts/review/47998上找到了一些使用这种可能性来附加事件的代码。

代码语言:javascript
复制
        if (typeof unsafeWindow.onPageChange === 'function') {
        var _onPageChange = unsafeWindow.onPageChange;
        unsafeWindow.onPageChange = function(){
            _onPageChange();
            filter();
        };
    } else {
        unsafeWindow.onPageChange = filter;
    }
票数 1
EN

Stack Overflow用户

发布于 2009-07-06 11:19:20

在使用Greasemonkey时,一个强大的技巧是“劫持”现有的JavaScript函数。如果您正在更改的页面有一个名为processAjaxResponse的函数,则在处理XmlHttpRequest响应时会调用该函数,您可以在您的Greasemonkey脚本中执行以下操作:

代码语言:javascript
复制
var originalProcessAjaxResponse;

function myNewProcessAjaxResponse() {
  /* Manipulate DOM if you need to, and then... */
  originalProcessAjaxResponse();
}

function hijack() {
  var originalProcessAjaxResponse = processAjaxResponse;
  processAjaxResponse = myNewProcessAjaxResponse();
}

这允许您在发生AJAX响应事件时注入自己的功能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1086417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档