2016-11-11 12 views
0

非常に奇妙な問題です。 が動作するように思わタグがappendChild(要素)で閉じていません。 (</canvas>タグがない、他はすべて正しく閉じます)

var container = document.getElementById("graph"); //container element 
console.log("Containers id is " + container.id); //graph 

var element = document.createElement(this.componentType); //"canvas" 
element.id = "canvasId"; 

console.log(element.outerHTML); //<canvas id="canvasId"></canvas> 
//container.innerHTML = element.outerHTML; 
document.getElementById("graph").appendChild(element); 

コード:私はいくつかのコードを持っています。もし

this.componentType = "div" 

または

this.componentType = "custom" 

それはすなわち、終了タグを適用します。

<div id="canvasId"></div> 

または

<custom id="canvasId"></custom> 

しかし

this.componentType = "canvas" 

場合

は、それだけにもかかわらず!オープニングタグ

<canvas> 

ノー終了タグを生成しませんよ! console.logは終了タグを表示します! 私は閉じタグを取得しますが、appendChild技法またはouterHtml技法を使用しても、文書はcanvas()の開始タグのみを適用します。他のタグとカスタムタグが読み込まれます。

私は側の似た質問のいくつかをチェックし、答えはhere(ページの真ん中)であると考えました。しかし、他の誰かがredditで彼のコードが働いていることを示しました。

var element = document.createElement('canvas'); 
document.body.appendChild(element); 
console.log(element.outerHTML); // "<canvas></canvas>" 

ChromeとSafariで確認したところ、両方ともdevツールで同じ結果が得られました。オープニングタグがキャンバスの場合のみ表示します。他のすべてが適切に表示されます。

編集:Results

+1

使用しているChromeのバージョンは何ですか?私は最新のものを使用しており、うまく動作します。 – zfrisch

+0

この '#graph'は、要素の型ですか?私は[短い例](https://jsfiddle.net/kqhnk3to/)を作った(私は問題を理解したことを願っていますか?)、Chrome54でもうまくいくようです...? – Teemu

+0

Teemu:それだけですが、私はページ上のキャンバス要素を見る必要があります。また、ページソースでは、私はを得るだけです。最後にはです。しかし、それはコンソールです。ログ ' –

答えて

0

ため息。だから、体内で何もないシンプルなhtmlファイル(と、まだ同じ問題を)コード化した後、私は醜い解決策を見つけた:

document.body.innerHTML = "<div><canvas>" + " <canvas></div>"; 

しかし、それは余分を挿入します。少なくとも、それが閉じてid'dキャンバスを使用しています:/

<div><canvas><canvas></canvas></div> 

をまた、私は途中で+を追加しない場合、私は

<div><canvas> </div> 

を取得します。私はpyCharmを使用していました。私はそれがpyCharm localserverのバグだと思ったので、テキストエディットに別のhtmlファイルを書きましたが、サーバを実行していない状態でロードしても同じ結果が得られました。次のストップ、それは私のシステムthatsねじれているかどうかを確認するためにWindowsでそれを試しに行く。

編集:で作業しています。私の次のステップは、osx yosemiteを更新/更新するように見えます。

EDIT:Teemusの説明を含める:

はい、それはそれです。私はこれがChromeのコンソールの機能だと思います。 DOMへのHTMLが正しく作成されます。キャンバスにはコンテンツがないため、終了タグは必要ありません(コンソールでのみ、HTMLはそれを必要とします)。新しく作成したキャンバス要素にテキストを追加すると、Chrome開発ツールにも終了タグが表示されます。 - Teemu

私はまだそれが奇妙なWindowsでそれが正常に動作したが、OSX(Safari &クロム)で、結果は同じです。だから私は、この質問に答えていると思います。

関連する問題