質問

使用しているリッチテキストエディターのバグを修正しようとしています。これにより、< embed> タグが終了タグなしで挿入されます(出力が完全に停止します)。 。この操作の問題を特定しました:

// body is a <body> tag
body.innerHTML = '<embed src="http://example.com/whatever"></embed>';

豪華なコードはなく、Firefoxの innerHTML 割り当てのみ。 Firebugのエラーを次のように複製できるはずです。

>>> document.body.innerHTML = "<embed></embed>"
"<embed></embed>"
>>> document.body.innerHTML
"<embed>"

これには回避策がありますか?タグが必要ですが、1つのくだらないエッジケースがあるため、リッチテキストエディター全体を再構築/置換することはできません。

これを document.createElement( 'embed')のようなものに変換することはできません。このエディターへの実際の入力には、 &lt; embed&gt; ; innerHTMLは、紙上では、このユースケースに最適です。&lt; embed&gt; で動作させることはできません。

役に立ちましたか?

解決

これはあなたの問題に対する答えではないかもしれませんが、&lt; embed&gt; W3C

他のヒント

&lt; embed&gt;は標準のhtmlの一部ではなく、広く実装されているため、事実上の標準です。

そうは言っても、Firefox 3(MineField v3.0.0.5)を実行していて、少し予想外ですが、完全に正しい機能です。選択した要素に exact HTMLが挿入されることを期待していましたが、代わりに clean htmlを取得しました。

&lt; embedは空のタグであるため(つまり、コンテンツのみを持ち、属性のみを持つことができます)、Firefoxはこれを有効にします

<embed attribute="value"></embed>

into

<embed  attribute="value"/>

、これは完全に有効な閉じたタグです。 &lt; input /&gt;などの他の空のタグでも同じです。および&lt; image&gt;

このページで、実際の動作を確認できます。スクリプトレスバージョンのページには、明るいピンク色のdiv内に埋め込まれたビデオ(youtube)があります。スクリプトはその内容を盗み、innerHTMLとして本文に配置します。

これは、document.writeが持つ&lt; script /&gt;の問題を思い出させます。タグ。

嘘。就寝直前にSOの質問に答えないでください。

Firebugで次のことを試しました

//break up initial embed into single chunks
document.body.innerHTML = "<e"+"mbe"+"d></embed>" 

そして、innerHTMLの値を確認したときに表示されると予想されました。ここでの考え方は、初期文字列を複数の連結文字列に分割することです。愚かですが、回避策の可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top