0

imagesページに有効な(存在する画像)のURLを書き込もうとしていhtmlます。これは、変数に追加された入力画像のリストですurls。URLは、例として、既存および非既存のGoogle製品アイコンのURLです。

var urls = [
"https://www.google.com/images/icons/product/chart-32.png",
"https://www.google.com/images/icons/product/docs-32.png",
"https://www.google.com/images/icons/product/drive-32.png",
"https://www.google.com/images/icons/product/googlemail-32.png",
"https://www.google.com/images/icons/product/dropbox-32.png",
"https://www.google.com/images/icons/product/reader-32.png",
"https://www.google.com/images/icons/product/test-32.png",
"https://www.google.com/images/icons/product/microsoft-32.png",
"https://www.google.com/images/icons/product/chat-32.png",
"https://www.google.com/images/icons/product/hangouts-32.png",
"https://www.google.com/images/icons/product/maps-32.png",
"https://www.google.com/images/icons/product/map_maker-32.png",
"https://www.google.com/images/icons/product/apple-32.png",
"https://www.google.com/images/icons/product/latitude-32.png",
"https://www.google.com/images/icons/product/sketchup-32.png",
"https://www.google.com/images/icons/product/skymap-32.png",
"https://www.google.com/images/icons/product/google_favicon-32.png",
"https://www.google.com/images/icons/product/mobile_app-32.png",
"https://www.google.com/images/icons/product/mobileapp-32.png",
"https://www.google.com/images/icons/product/goggles-32.png"
];

画像のURLを確認してドキュメントに書き留めるには、これを使用します。https://www.google.com/へのアクセス許可がある場合は完全に正常に機能するため、これを検証する場合は、 https のjsコンソールを使用してください。 ://www.google.com/

var xhr = {};
for(var i = urls.length; i-- ; i>0){
  xhr[i] = new XMLHttpRequest();
  xhr[i].open('GET',urls[i]);
  xhr[i].onload = write();
  function write() { 
       document.write(urls[i] + "<br>")
    }
  xhr[i].send(null);
  }

ここで、有効なURL(pngアイコンを含むURL。有効ですが無効です)のみを書き込むために、chart-32.png次のdropbox-32.pngコードを試しました。

var xhr = {};
for(var i = urls.length; i-- ; i>0){
  xhr[i] = new XMLHttpRequest();
  xhr[i].open('GET',urls[i]);
  xhr[i].onload = write();
  function write() { 
    if(xhr[i].status != 404){
       document.write(urls[i] + "<br>")
       }
    }
  xhr[i].send(null);
  }

しかし、何らかの理由で、有効なpngに制限した場合にのみ、このエラーがchromeで発生します。エラー:InvalidStateError:DOM例外11

誰かが私が間違っていることを知っていますか?および/またはこれを修正する方法は?

4

1 に答える 1

1

Ajax-syncは「onloadコールバック」を必要としません。

この行を調整します。xhr[i].open('GET',urls[i]);

修正: xhr[i].open('GET',urls[i], false); -バグを回避するため

document.writeまたは、document.getElement*(使用したい場合はasync-mode)に置き換えます

同期モードAjax、例:

var r = new XMLHttpRequest();
    r.open("GET", "http://www.example.com", false);//Sync mode
    r.send(null);
    if (r.readyState===4 && r.status===200) {
        document.write(**content**);
    }

このルールに従ってください(ajaxでなくても):

  • document.write同期モードで。
  • document.getElement*getElementById、、...)ascync-modeを使用しますgetElementsByTagNamegetElementsByClassName
于 2012-11-30T23:24:36.240 に答える