0

MS Word から任意の Web ブラウザー (IE を除く) にコピーされた HTML コードには、重要なデータを含む条件付きコメントが含まれています。次のスニペットのように:

<p class="MsoToc1">
<!--[if supportFields]>
    ...
<![endif]-->A Section of my Document&nbsp;...&nbsp;
<!--[if supportFields]>
    ... PAGEREF _Toc360610812 ...
<![endif]-->3<!--[if gte mso 9]>
    ...
<![endif]-->
</p>

JavaScript を使用して Firefox と Chrome でコメントの内容を読み取って解析することはできますが、IEは実際に解析する前に条件付きコメントを「削除」します。彼らのドキュメントには、条件付きコメント内のすべてが「解析レベルで」無視されると記載されています。

貼り付けた HTML をキャプチャするために現在使用している手法は、WYSIWYG エディターで広く使用されており、この回答で詳しく説明されています。基本的に、ドキュメントに「contenteditable」要素を作成し、ユーザーにその要素内に貼り付けるように指示します。次に、ブラウザーは貼り付けられたコードをドキュメントに挿入します。次に、JavaScript を使用して、挿入されたコードを抽出し、変更します。

しかし、それがおそらくコメント削除問題の主な原因です。貼り付けイベントの直後に、貼り付けられたコードがドキュメントに挿入されます。その時点で、IE は条件付きコメントの内容を単純に削除します。

では、コメントを保持したままデータを取得できるクリップボードのコンテンツをキャプチャする別の方法はありますか?

4

1 に答える 1

0

コメントをコピーする場合は、プロパティやリスト.childNodesを見るのではなく、コンテンツをコピーする必要があります。リストには、テキスト ノードとコメント ノードを含むすべての DOM ノードが含まれているため、次のようなことができます。.innerHTML.children.childNodes

var div = createElementFrom(codeThatGetsPasted);
var target = document.querySelector(selectorForOnPageElement);
var childarray = Array.prototype.slice.call(div.childNodes);
childarray.forEach(function(child) {
 target.appendChild(child);
});

これにより、条件付きコメントがターゲット要素に配置されます。とはいえ、DOMContentLoaded が発生した後に IE がそれらを解析するかどうかはわかりません。

于 2013-09-13T16:55:10.277 に答える