0

我正在为一个游戏创建一个用户脚本,它将实时修改页面的某些部分,以帮助用户知道他们必须等待多长时间才能执行某些操作。

我遇到的问题是游戏已经内置了一些 AJAX,它每三秒调用一次jQuery.getJSON()函数来获取信息以更新内容。我的脚本需要让最终用户看起来好像页面是实时更新的,而不是每 3 秒更新一次。以及添加额外的信息。无需添加额外的请求(游戏所有者不会喜欢这样)。

为此,我需要覆盖页面的默认行为,我需要更改调用的回调函数jQuery.getJSON()以添加我的功能。或者至少完全禁用它,这样我就可以写一个新的了。而且它不像为旧名称分配一个新函数那么容易,因为它没有名称,他们只是在jQuery.getJSON()调用中构建函数。这可能吗?

顺便说一句,页面脚本包含在单独的 .js 文件中,如果这有什么不同的话。

4

1 回答 1

1

如果 jQuery.getJSON() 调用被分配给一个变量,它将返回一个 jqXHR 对象,然后您可以通过添加或更改其回调来修改它。

如果它没有作为变量公开,而是像这样简单地调用

... js blah ...
jQuery.getJSON("myurl",function(){
    more blah
});
... more blah ...

...那么我相信你在没有桨的情况下是一条小溪,因为这变成了一个没有句柄的匿名函数调用。在这一点上,唯一的方法是尝试通过在第一个脚本上加载另一个脚本来覆盖,但我真的不确定这会使浏览器环境有多稳定。

有关$.ajax() 系统如何工作的更多详细信息,请参阅http://api.jquery.com/jQuery.getJSON/http://api.jquery.com/Types/#jqXHR的 jQuery 参考。

于 2012-10-10T17:16:18.303 回答