jqueryを使用して、divのスパンの下に挿入しようとしています。
HTML:
<span epub:type="pagebreak" id="pagePrefix" title="1"></span>
JS:
$('div').html('<span epub:type="pagebreak" id="pagePrefix" title="1"></span>');
次のエラーが表示されます。SyntaxError: DOM Exception 12
これの回避策はありますか?
jqueryを使用して、divのスパンの下に挿入しようとしています。
HTML:
<span epub:type="pagebreak" id="pagePrefix" title="1"></span>
JS:
$('div').html('<span epub:type="pagebreak" id="pagePrefix" title="1"></span>');
次のエラーが表示されます。SyntaxError: DOM Exception 12
これの回避策はありますか?
jQuery はinnerHTML、シリアル化された DOM ノードを に渡すときに使用します$('div').html()。これは、あなたDOCTYPEがhtml. ただし、DOCTYPEシリアル化されたxhtmlDOM ノードでは、ドキュメントに挿入される前にいくつかの追加ケースをクリアする必要があります。W3.orgによると、XML Char 生成 (U+003A COLON ":" を含む) と一致しない文字をデータに含むノードAttr、Textノード、CDATASectionノード、Commentノード、またはノードを含むシリアル化された DOM ノードは、例外を発生させる必要があります。ProcessingInstructionINVALID_STATE_ERR
W3は、XML(XHTML) コンテキストでinnerHTMLDOM 属性をHTMLElements設定するときにユーザー エージェントが実行する必要があるアルゴリズムも指定します。HTMLDocumentsそのアルゴリズムのステップ 2 は次のとおりです。
属性が要素に設定されている場合
innerHTML、ユーザー エージェントは、その要素の開始タグに対応する文字列を作成したばかりのパーサーにフィードし、DOM でその要素のスコープ内にあるすべての名前空間プレフィックスを宣言し、宣言する必要があります。 DOM 内のその要素のスコープ内にあるデフォルトの名前空間 (存在する場合)。
epub現在のコンテキストがルート コンテキストの外にあるため、ユーザー エージェントは、親要素に名前空間を指定したことを知りません。したがって、DOM に追加するときに、シリアル化された DOM ノードの名前空間を指定する必要があります。
$('div').html('<span xmlns:epub="http://www.idpf.org/2007/ops"
epub:type="pagebreak" id="pagePrefix" title="1"></span>');
コロンをエスケープします。
$('div').html('<span epub\:type="pagebreak" id="pagePrefix" title="1"></span>');