7

私はこのようなコードを持っています

<a class="img" href="LINK">
  <img src="GOOD_IMG" title="title" onerror="src='ERROR_IMG'">
</a>

FireFox と chrome では期待どおりに動作します (存在する場合は GOOD_IMG を表示し、存在しない場合は ERROR_IMG を表示します) が、IE (9) では常に ERROR_IMG を表示します。

IEでデバッグし、オンザフライで設定すると、他のonerror何かなど

onerror="alert('error')" 

警告メッセージが表示され、正しい画像が表示されます。

onerror他のブラウザには問題がないのにIE がアクティブになる原因は何ですか?

原因を特定できる方法はありonerrorますか?

ありがとう

4

3 に答える 3

1

このように試すことができます。最初に、画像が存在するかどうか (AJAX コール リターンが存在するかどうか) を確認するための JS 関数を 1 つ作成し、それに応じて画像を変更する必要があります。

次に、onerror イベントで関数を呼び出します

function imgError(imageControl, path) {        
            $.ajax({
                type: "POST",
                async: true,
                url: "test.aspx/CheckImageExists",
                data: "{'imagePath':" + JSON.stringify(path) + "}",
                contentType: "application/json; charset=utf-8",
                success: function (response) {
                    if (response.d == "exists") {
                        imageControl.src = path;
                    }
                    else {
                        imageControl.src = 'img/errorimg.jpg';
                    }
                }
            });
            return true;
        }

<img src="<%# "admin/"+ Eval("imagath") %>" onerror="imgError(this,'<%# "admin/"+ Eval("imagath") %>')">

C#
 [WebMethod]       
        public static string CheckImageExists(string imagePath)
        {
            string fullPath = HttpRuntime.AppDomainAppPath.ToString() + imagePath;
            fullPath=fullPath.Replace('/','\\');
            return File.Exists(fullPath) ? "exists" : "notexists";           
        }
于 2014-06-27T08:14:01.673 に答える