javascript - 如何在 greasemonkey 中进行同步 AJAX 调用?

标签 javascript ajax greasemonkey synchronous gm-xmlhttprequest

我有一个 URL 列表,需要一个接一个地加载每个页面。
这是我心中的主要功能。

mainFunction() {  
loop {  // Loop through URL list
oPage = func1(URL); //Get page contents
aResult = func2(oPage); //Analyse the contents
func3(aResult); //Do current page modifications
}  
}

func1 使用 GM_xmlhttprequest,它是异步的,因此 oPage 导致“underfined”,因为函数在可以检索页面内容之前结束。
func2 也使用 GM_xmlhttprequest,所以即使 oPage 是否未定义,aResult 也将是未定义的。

关于如何使所有这些工作有任何想法吗?

func1 func2func3 应该在整个脚本中重复使用,这些函数中的每一个都可以在脚本的不同部分单独或一起使用.

最佳答案

您有什么理由需要使用 Greasemonkey 的特定功能吗?你是在做跨站请求还是特别需要的东西?看着 Wiki对于 Greasemonkey,我找不到将 asynchronous 设置为 false 的选项。

您最简单的选择是包含 JQuery使用 Greasemonkey 脚本并使用 JQuerys AJAX 功能。当然,这可以在没有 JQuery 的情况下完成,但是,这方面的跨浏览器不兼容手动处理是相当痛苦的。

使用 JQuery,您的代码将如下所示:

function func1(url) {
    var result;

    $.ajax({
        type: "GET",
        url: url,
        async: false,
        success: function(data){
            result = data;
        }
    });
    return result;
}

你会像这样声明你的变量oPage:

var oPage = func1(url);

剩下的我想你自己想通了,祝你好运。

关于javascript - 如何在 greasemonkey 中进行同步 AJAX 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3257898/

相关文章:

javascript - 将 SVG 对象而不是文件添加到 LeafletJs

javascript - 将 "value"从表单中的选择传递到具有 javascript 问题的 php 变量

ajax - jQuery AJAX 'multipart/form-data' 未发送数据?

javascript - 没有 cookie 的 XMLHttpRequest

php - 如何使用我通过在 HTML 5 Canvas 上绘制创建的 src 保存图像文件

javascript - 从 Ajax Arraybuffer 响应类型创建 HTML Canvas

jquery - 用于点击链接的 Greasemonkey Jquery 脚本

google-chrome - 编辑 Greasemonkey 脚本/Chrome 用户脚本时如何简化更改/重新加载过程?

php - 我的 ajax 上传带有 utf-8 字符集中西类牙字母的 csv 文件剪切了我的寄存器

javascript - 使用submit()方法提交表单时的回调