2016-09-28 14 views
0

私はそれにたくさんのコードを持つJavascriptシングルページアプリケーションを持っています。JavascriptシングルページアプリケーションIE11の奇妙な動作

主なアイデアは、私のアプリがキャンバスを作成し、すべての種類のデータに基づいてすべての種類のものを描画することです。

各キャンバスはdivコンテナ内にあります。各divコンテナには、キャンバスの横に段落も含まれています。

すべてはChromeとFirefoxで正常に動作しますが、IE 11に奇妙な何かが起こる:

それらがメイン文書に添付された後、コンテナのdivは空です。 そしてなぜ私は考えていません。

別の奇妙なことは、私は、コンテナのdivが追加されているセクションの後に次のコードを挿入することで、アプリを破る場合は、キャンバスや段落も追加され、2つの可視されていることである。

var foo = some_var; //where some_var is undefined 

ので、

A.jsファイル:

var paragraph = document.createElement("p"); 
var textnode = document.createTextNode("some text"); 
var div = document.createElement("div"); 
paragraph.appendChild(textnode); 
div.appendChild(paragraph); 
div.appendChild(canvas); 

someOBJ.html = div; 

B.jsファイル:

、コードは単にアイデアを作るために、巨大であるが、ここではサンプルです
var parent2 = document.getElementById(parentId); 
parent2.innerHTML = ""; 
parent2.style.width = '100%'; 

//someOBJs is an array of someOBJ from the A.js file 
for(var i = 0; i < someOBJs.length; i++){ 
     parent2.appendChild(someOBJs[i].html); 
} 

は、私は(someOBJsは、[i]は.htmlを)追加され、私はキャンバスと段落は付加され、その後、上記の(定義されていないものを使用して)ここに、他の唯一のdivコンテナを破壊コードを挿入した場合

+0

コンソールエラー? – mplungjan

+0

@mplungjanブレークコードを挿入せずにエラーが表示されない場合 – whitefang1993

+0

'canvas'を追加していますが、どこに定義されていますか?私はコードのいくつかが欠けていると思う。 – ps2goat

答えて

0

IEにinnerHTML = ""に関してthis bugに関連する可能性があります。原因かもしれないのパフォーマンス関連として、一方

while (parent2.lastChild) 
    elm.removeChild(parent2.lastChild); 

:div要素を空にするのremoveChildを使用してみてくださいdocument fragmentを使用して一度の代わりにDOMにすべてのノードを添付することができます一つ一つ:

var elements = document.createDocumentFragment(); 
for(var i = 0; i < someOBJs.length; i++){ 
    elements.appendChild(someOBJs[i].html); 
} 
parent2.appendChild(elements); 
+0

innerHTML = ""問題がありました、ありがとうございます。 – whitefang1993