javascript - greasemonkey 用户脚本中的 jQuery.getJSON

标签 javascript jquery greasemonkey

我正在尝试编写一个发出跨域 AJAX 请求的用户脚本。

我使用@require 在我的脚本中包含了 jQuery,在我尝试运行 jQuery.getJSON 之前一切似乎都运行良好。

我正在访问的 API 支持 jsonp,但是我一直收到错误消息,指出 jsonp123456789 未定义。

据我所知,这是由于 jQuery 将 jsonp 响应直接写入页面的头部,然后变成沙盒。一旦发生这种情况,jQuery 将无法再访问回调,导致它未定义。 (我不是 100% 相信这种情况,但对我来说似乎有可能)。

有什么办法可以解决这个问题吗?有人建议我在 unsafeWindow 中声明回调函数,但我不确定如何做到这一点,也没有设法让它工作。

最佳答案

如果 jQuery 在内部使用 GM_xmlhttpRequest 以便您可以享受 jQuery 方法的所有便利和 Greasemonkey 的跨站点功能,那不是很好吗?正如 mahemoff 指出的那样,Greasemonkey 可以让您在不依赖 JSONP 和遇到您面临的回调问题的情况下发出请求,但您必须自己处理 JSON 内容。

我们已经编写了一个可以做到这一点的库:Greasemonkey/jQuery XHR bridge .如果您在用户脚本中@require该脚本,则所有$.get$.getJSON 以及$.post 等。jQuery 调用将在不依赖 JSONP 等技术的情况下跨站点工作。

因此,如果您使用此桥并简单地从您的 URL 中删除 ?callback=?,您的 jQuery 代码应该无需修改即可工作。 This blog post提供分步演练。如果有人对桥接插件有任何问题、意见、错误报告或建议,请告诉我。

关于javascript - greasemonkey 用户脚本中的 jQuery.getJSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1647519/

相关文章:

jquery - Rails 3.2.12 根据第一个 collection_select 的选择选择表单中的第二个元素

javascript - 无法获取图像大小,但长度可以吗?

mysql - 我可以在 FireFox 中执行 MySQL SQL 语句吗?

javascript - Greasemonkey 按钮点击

html - 仅使用 CR 作为 pre 标记内的换行符不起作用

javascript - 是否有 jQuery 独立 Ajax 模块?

javascript - JavaScript 函数中返回变量

javascript - 如何在表单提交时更改不显示以阻止

javascript - 如何动态添加 ImageButtons 和 OnClick Listeners 到 300 多个图像?

javascript - JQuery DataTables 不工作方法 Draw();