web-dev-qa-db-ja.com

ページの読み込み時に404エラーを検出

私は自分のウェブサイトにグーグルマップを埋め込んでいます、そして時々グーグルは404エラーで応答します。私はこれを知っておくべきだと知っていますが、思い出せず、すぐに見つけることができません。このサイトの他の404iframe関連の質問には回答がありませんでした。

Javascriptに404応答があるかどうかを確認するにはどうすればよいですか?応答が404のときにlocation.reload()を呼び出す予定です。

<iframe src="https://mapsengine.google.com/map/embed?mid=zGLD-nMIJQAg.k0gTyNlOPz_Q" width="640" height="480"></iframe>

エラーコードは次のとおりです。

GET https://khms0.googleapis.com/kh?v=159&hl=en&x=784456&y=1636828&z=22&token=122715 404 (Not Found)

私はこれを試しました:それは役に立ちませんでした。

var url = 'https://mapsengine.google.com/map/embed?mid=zGLD-nMIJQAg.k0gTyNlOPz_Q';
if (url.statusCode === '404'){
    window.location.reload();
}
8
MimiBambino
var url = 'https://mapsengine.google.com/map/embed?mid=zGLD-nMIJQAg.k0gTyNlOPz_Q';
function UrlExists(url) {
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    if (http.status != 404)
        //  do something
    else
        window.location.reload();
}

この関数を使用して、URLをパラメータとして渡します。ステータスが404でない場合は、何も起こらないか、他のことを行うと、要件に応じてページが更新されます。

15
Amit Guleria

私はこれが古い質問であることを知っていますが、フェッチを使用してそれを行うための更新された方法があります(IEでは機能しません):

function urlExists(url, callback) {
  fetch(url, { method: 'head' })
  .then(function(status) {
    callback(status.ok)
  });
}

let url = 'https://mapsengine.google.com/map/embed?mid=zGLD-nMIJQAg.k0gTyNlOPz_Q';

urlExists(url, function(exists) {
  if (exists) {
    // it exists, do something
  } else {
    // it doesn't exist, do something else
  }
});
7
Adam Sparks