【问题标题】:AJAX from within a Safari Extension's injected script来自 Safari 扩展的注入脚本中的 AJAX
【发布时间】:2011-07-05 10:12:47
【问题描述】:

我正在尝试在 Safari 扩展程序中使用注入脚本中的 API 来扩展短网址:

$.getJSON('http://api.longurl.org/v2/expand?format=json&url=' +  encodeURIComponent(href) + '&callback=?', function(data) {

    console.log(data);
});

我收到以下错误:

ReferenceError: Can't find variable: jQuery15103411371528636664_1298845652395

我尝试了不同的 API 并得到相同的错误,所以我知道不是这样。此外,如果我从控制台执行相同的代码,我会得到成功的响应。所以它一定与在 Safari 扩展的注入脚本中有关。

有什么想法吗?

【问题讨论】:

  • 在我看来,$ 找到了通往命名变量的方法,但变量值丢失了……您是否尝试只记录 jquery 对象?
  • 伊恩,我也遇到了同样的问题。你找到解决办法了吗?
  • 您是否尝试过使用完整的 $.ajax 语句来代替?看起来它没有找到返回的 jquery 函数。您可能还想看看更手动地执行 JSONP 并自己定义返回函数。

标签: jquery ajax safari javascript-injection getjson


【解决方案1】:

我相信你必须先将 jQuery 添加到插件中。下面是一个例子:

var newElement = document.createElement("script");
newElement.type = "text/javascript";
newElement.src = "//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";
document.body.insertBefore(newElement, document.body.firstChild);

然后您可以使用您的插件在选项卡中执行 jQuery。 ;)

【讨论】:

  • 情况并非如此。错误消息包含 jQuery 已经加载的证据;它在GET上附加了自己的回调名称“jQuery15103411371528636664_1298845652395”,由服务器与数据一起返回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
相关资源
最近更新 更多