【问题标题】:JQuery cross domain JSONP in FF5 extension/addon, callback not definedFF5扩展/插件中的JQuery跨域JSONP,未定义回调
【发布时间】:2026-01-01 19:00:01
【问题描述】:

您好,我正在尝试为 Firefox5 创建一个扩展,其中扩展代码在页面加载开始时注入两个脚本。

var data = require("self").data;
var pageMod = require("page-mod");
pageMod.PageMod({
        include: ['*'],
            contentScriptWhen: "start",
            contentScriptFile:
        [data.url("jquery.min.js"), data.url("js_include.js")],
            });

脚本 js_include.js 正在使用全局回调函数“onJSONPLoad”进行跨域 JQuery jsonp 调用,代码如下:

window.onJSONPLoad = function(data) {
      //do something here...
}

jQuery(function(){
        jQuery.ajax({
                url: 'http://localhost:8000/getvos/',
                    type: 'GET',
                    data: 'url='+window.location.href,
                    dataType: 'jsonp',
                    jsonp: 'jsonpCallback',
                    jsonpCallback: 'onJSONPLoad'
            });

    });

如果我在页面中执行此操作,则此操作有效,但当我尝试在附加组件中执行此操作时无效。 Firebug 显示调用已完成,得到响应,我也可以在控制台中看到响应。但是,onJSONPLoad 函数永远不会执行,我得到的只是“onJSONPLoad 未定义”。

我已经看到关于 SO 的其他问题/答案,但他们要求 onJSONPLoad 是全球性的,我已经这样做了,但它仍然不起作用。

有什么帮助吗?

【问题讨论】:

    标签: jquery firefox-addon cross-domain jsonp


    【解决方案1】:

    试试这个:jsonpCallback: 'window.onJSONPLoad'

    【讨论】: