2016-12-20 73 views
0

イメージとJavaScriptファイルの間にあるファイルのリストを動的にプリロードしようとしています。 ChromeとFirefoxではすべてがうまくいっていますが、JavaScriptファイルをEdgeにプリロードしようとすると失敗します。 Edgeは画像を扱いますが、jsファイルは扱えません。そして、はい、私はaddEventListenerで試しましたが、どちらもうまくいきません。object.onloadがIEとEdgeで失敗する

エッジから私に間違いがありません。

var object = {}; 
    object = document.createElement('object'); 
    object.width = object.height = 0; 
    object.data = path/to/javascriptfile.js 
    body.appendChild(object); 

    object.onload = function(){ 
     console.log('hello world') 
     //not firing with edge 
    } 

関連するものはありますか?

更新日:1日後に何の成功も見られませんでした。おそらく今は残しておき、解決策が見つかるまで、スクリプトファイルをあらかじめ読み込んでおいてください。チェック

+0

可能な複製をeljuko(http://stackoverflow.com/questions/7756353/is-there- a-cross-browser-standard-on-load-event-for-htmls-object-tag) –

答えて

1

おそらく価値 - MSDNから:

クライアントの負荷のアプリケーション、埋め込まれたオブジェクト、および画像とすぐ として、それは解析中に、アプレット、埋め込み、およびIMGオブジェクトに遭遇しました。 したがって、これらのオブジェクトのonloadイベントは、 クライアントが後続のオブジェクトを解析する前に発生します。イベントハンドラ がこれらのオブジェクトのonloadイベントを受け取るようにするには、オブジェクトの前にイベントハンドラを定義するスクリプトオブジェクト を配置し、オブジェクトのonload 属性を使用してハンドラを設定します。

https://msdn.microsoft.com/en-us/library/windows/apps/hh465984.aspx

編集、明確化:

要素をページに追加される前に、あなたはイベントリスナーを添付しなければなりません。

でも、それがうまくいくかどうかわかりません。これがうまくいかない場合はIEで、あなたはおそらく代わりに、「オブジェクト」の「画像」を使用してプリロードでき

function doLoad() { 
    console.log('The load event is executing'); 
} 

var object = {}; 
object = document.createElement('object'); 
object.width = object.height = 0; 
object.data = 'path/to/javascriptfile.js'; 

object.onreadystatechange = function() { 
    if (object.readyState === 'loaded' || object.readyState === 'complete') doLoad(); 
    console.log('onreadystatechange'); 
} 

if (object.addEventListener) { 
    object.addEventListener("load", doLoad, false); 
    console.log('addEventListener'); 
} 
else 
{ 
    if (object.attachEvent) { 
     object.attachEvent("onload", doLoad); 
     console.log('attachEvent'); 
    } else if (object.onLoad) { 
     object.onload = doLoad; 
     console.log('onload'); 
    } 
} 

var body = document.getElementsByTagName("body")[0];  
body.appendChild(object); 

:しかし、確認するために、あなたはすべてのオプションは、以下の例をみてください使い果たしましたhttps://stackoverflow.com/a/11103087/1996783

+0

残念ながら、この瞬間に私は完全に死んでしまった、またはちょうど駄目だが、特定の情報。私は見ていきますが、おそらくエッジのための完全な回避策を作る必要があります。少なくとも今のところは。 – eljuko

+0

@eljuko例を追加しました。それが動作するかどうかわからないが、私の指を渡して – Mackan

+0

これに努力を入れていただきありがとうございます。これを試して、私がやれば通知します。 – eljuko

0

一時的な解決策は、onloadイベントをオブジェクトではなくscript要素に直接渡すことです。 Chrome & FFの魅力のように機能するので悲しいです。

これは、css sourceのobject.dataもロードされなかったことが判明しました。まだimage.dataにイメージを読み込むことができるので、バグかどうかわかりません。

しかし、ショーを続ける必要があります。

乾杯は、[クロスブラウザの標準は、HTMLの「オブジェクト」タグ用のオンロードイベントはありますか?]の

関連する問題