私は作成を依頼されたプロジェクトに取り組んでおり、IE8 で期待されるのと同じように他のブラウザーでも動作する必要があります。
これは、HTML を BBCode に、またはその逆に変換するために使用されるシステムです。
私の現在の問題は、HTML を BBCode に変換することです (BBCode から HTML への変換は解決されました (希望))。
例として、翻訳するこの種の入力があります(これはスポイラーです)
<DL contenteditable=false><DT>Spoiler:</DT><DD class=codebox contenteditable=true>someTextToBeSpoiled</DD></DL>
複数の行がある場合はさらに悪いです!
<DL contenteditable=false><DT>Spoiler:</DT><DD class=codebox contenteditable=true>Line1</DD><DD class=codebox contenteditable=true>Line2</DD><DD class=codebox contenteditable=true>line3</DD></DL>
この翻訳に使用しなければならないコードは、ほとんどすべての HTML 構造で機能するジェネラリスト コードに (ちょっと) 書き換え可能である必要があるため、スポイラー タグのこの特定のコードは、他のコードと同じように機能するはずです。私はデータがそれぞれのどこにあるか知っています。
ie8でこれを解決しようとします(他の人にとっては、ie8では利用できない方法を使用してより良い解決策を使用しますが、ところで、彼らはそれを非常に速く解決します)。
` var theOuterHTML = document.createElement('div'); theOuterHTML.innerHTML = "
var searchContent = regexEscape(theOuterHTML.innerHTML).replace("<!\\-\\- !!@here1!!# \\-\\->", "(.*?)")
searchContent = searchContent.replace("\n", "");
new RegExp(searchContent, "gm").exec(param1['context'].outerHTML)[1]
`
問題は、すべてのコードの後に var searchContent が次のようになることです (replace はありますが、何もしないようです):
<DL contenteditable=false>
<DT>Spoiler:</DT>
<DD class=codebox contenteditable=true>someTextToBeSpoiled</DD></DL>
(はい、存在する理由のない奇妙な新しい行があります)
replace はそれらの新しい行について何もしないように見え、入力に新しい行を追加することはできません (ie8 の予測不可能性のため)。
存在する必要がある終了テキストは次のとおりです。
[spoiler]someTextToBeSpoiled[/spoiler]
そのようなことはどのように解決できますか?私はこれに一日中戸惑いました:(