0

このコードは、ほとんどすべてのブラウザでうまく機能する、はるかに大きなスクリプトのコアです。それでも、IEでは機能しませんでした。だから私はそれを取り除いて、image.onloadがIEで起動していないことを発見しました。

私はいくつかの調査を行い、それが画像キャッシュの問題になるのを防ぎました。1つは、エラーは何かがキャッシュされる前に最初に発生し、さらに重要なことに、onloadイベントがsrcの前に付加されます。

また、IE互換の方法でonloadイベントを添付していることも合理的に確信しているので、何が原因でアラートが表示されないのでしょうか。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">             
            <script type="text/javascript">

        function generate(){
            var imageGen = document.createElement("img");
            imageGen.setAttribute('onload',"primer()"); 
            imageGen.setAttribute('src', "http://www.google.co.uk/images/srpr/logo3w.png");
            document.getElementById('image').appendChild(imageGen);
            }   

        function primer() { 
            alert("here now");
            }

        </script>
    </head>

    <body onload="generate()">
        <div id="image">

        </div>
    </body>
</html>

私はここでバージョンをホストしています

残念ながら私はIE8にしかアクセスできないので、他のバージョンでもIE8が存続するかどうかはわかりませんが、修正する必要があります。

4

2 に答える 2

2

まず、イベントは属性ではないため、を使用して設定することはできませsetAttribute。動作する場合と動作しない場合があります。

次に、画像要素の代わりに画像オブジェクトを作成してみてください。

var imageGen = new Image();
imageGen.src = "http://www.google.co.uk/images/srpr/logo3w.png";
imageGen.onload = primer;
document.getElementById('image').appendChild(imageGen);

ライブテストケース-IE8のようなIE9およびIE9互換モードで問題なく動作しました。

于 2012-07-01T14:04:34.077 に答える
1

imageGen.setAttribute('onload'、 "primer()");の代わりにimageGen.onload =primerを試すことができますか??

于 2012-07-01T12:07:45.477 に答える