gpt4 book ai didi

javascript - jQuery.ajax 调用在 Chrome 扩展中失败

转载 作者:可可西里 更新时间:2023-11-01 02:53:03 26 4
gpt4 key购买 nike

我正在将我的一个 Firefox 扩展程序移植到 Chrome,但我遇到了一个 AJAX 查询的小问题。以下代码在 FF 扩展中运行良好,但在 Chrome 中失败,状态为“0”。

function IsImage(url) {
var isImage = false;
var reImageContentType = /image\/(jpeg|pjpeg|gif|png|bmp)/i;
var reLooksLikeImage = /\.(jpg|jpeg|gif|png|bmp)/i;

if(!reLooksLikeImage.test(url))
{
return false;
}

var xhr = $.ajax({
async: false,
type: "HEAD",
url: url,
timeout: 1000,
complete : function(xhr, status) {
switch(status)
{
case "success":
isImage = reImageContentType.test(xhr.getResponseHeader("Content-Type"));
break;
}
},
});

return isImage;
}

扩展的这个特定部分会检查剪贴板上的内容(我已经解决的另一个 Chrome 问题),如果它是图像 URL,它会发送 HEAD 请求并检查“Content-Type”响应 header 以确定这是一个图像。如果是这样,它将返回 true,将剪贴板文本粘贴到 IMG 标记中。否则,如果它看起来像一个不是图像的普通 URL,它会将其包装在 A 标签中。如果它不是 URL,它只是进行普通粘贴。

无论如何,被检查的url肯定是一个图像,并且在FF中工作正常,但在完整的函数中,xhr.status是“0”,函数完成时status是“error”。将超时时间增加到 10 秒无济于事。我已经验证测试图像在运行时应该返回为“image/jpeg”:

curl -i -X HEAD <imageURL>

我也知道我应该使用成功和错误回调而不是 complete,但它们也不起作用。有什么想法吗?

最佳答案

正如您对 Chris 的理解,在内容脚本中,您不能执行任何跨域 XHR。您必须在扩展页面(如背景、弹出窗口或什至选项)中执行它们。

有关内容脚本限制的更多信息,请参阅: http://code.google.com/chrome/extensions/content_scripts.html

关于xhr限制的更多信息,请引用: http://code.google.com/chrome/extensions/xhr.html

关于javascript - jQuery.ajax 调用在 Chrome 扩展中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1955199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com