Firefox拡張機能の1つを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のもう1つの問題はすでに解決済みです)、画像のURLの場合は、HEADリクエストを送信し、「Content-Type」応答ヘッダーをチェックして画像であることを確認します。その場合、trueを返し、クリップボードのテキストをIMGタグに貼り付けます。それ以外の場合、画像ではない通常のURLのように見える場合は、Aタグでラップします。URLでない場合は、単純な貼り付けを行います。
とにかく、チェックされているURLは間違いなく画像であり、FFで正常に機能しますが、完全な関数では、xhr.statusは「0」であり、関数が完了するとステータスは「エラー」になります。タイムアウトを10秒に増やしても効果はありません。実行時にテストイメージが「image/jpeg」として返されることを確認しました。
curl -i -X HEAD <imageURL>
また、完全ではなく成功とエラーのコールバックを使用する必要があることもわかっていますが、どちらも機能しません。何か案は?