2

私は得る

SCRIPT601: この操作のソース HTML が無効です。

ext-all-debug.js、行 6769 文字 21

IE8で

これがラインです。

el.insertAdjacentHTML(hashVal[0], html);

デバッグ中、html の値は"<a title=\"\">1</a>"

私はこの問題に数日間立ち往生しました。これは評価機能に関連しています。このエラーが原因で、ie 8 で評価の星が表示されていないと思います。他のブラウザは問題ありません。コードの対応する部分を以下に示します。私はextjsを使用しています。

var starLink = star.createChild({
            tag: 'a',
            html: this.values[i],
            title: this.showTitles ? this.titles[i] : ''
        });

そして、この要素を作成している間、呼び出しは次の部分に行き、上記の指定された行でエラーが発生します。

 insertHtml : function(where, el, html){
            var hash = {},
                hashVal,
                range,
                rangeEl,
                setStart,
                frag,
                rs;

            where = where.toLowerCase();

            hash[beforebegin] = ['beforeBegin', 'previousSibling'];
            hash[afterend] = ['afterEnd', 'nextSibling'];


            if (el.insertAdjacentHTML) {
                if(tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))){
                    return rs;
                }


                hash[afterbegin] = ['afterBegin', 'firstChild'];
                hash[beforeend] = ['beforeEnd', 'lastChild'];
                if ((hashVal = hash[where])) {
                    el.insertAdjacentHTML(hashVal[0], html);
                    return el[hashVal[1]];
                }

            } else {
4

2 に答える 2

1

IE は、.innerHTML、.insertAdjacentHTML などの使用に非常にうるさいです。

渡される HTML は完全に構造化されている必要があります。いかなる種類の間違いも許されません。ある場合、それはまったくしません。他のブラウザは、ドキュメントの残りの部分に対して行うのと同じ「最良の推測」を実行します。

次のような HTML 値として非常に単純なものを入れてみてください。

<p>Hello World!</p>

そして、それが機能することがわかるはずです。その場合、提供している HTML の何が問題なのかを見つける必要があります。うまくいかない場合は、別の問題があります。

于 2012-12-11T13:54:13.573 に答える
1

どの要素をどこで作成しているのかはわかりませんが、新しいtr要素をに追加しようとしていると思いますtable。ただし、これは IE < 10 では不可能です。古い IE ではテーブル モデルが他のブラウザとはまったく異なり、テーブルにアクセスしinsertAdjacentHTML()て行を作成することはできません ( を作成tdできます)。また、 andinnerHTMLの直系の子孫の場合は読み取り専用です。tabletr

IE でテーブルに新しい行を追加する最良の方法は、insertRow(index)メソッドを使用することです。index行を追加する場所です。デフォルトindexは -1 で、テーブルの最後に新しい行を追加します。

MSDN のこの記事Building Tables Dynamicallyが役立つ場合があります。

BTWif ((hashVal = hash[where]))は、新しいブラウザーでは有効な構文ではなくなりました。

于 2012-12-11T16:49:50.357 に答える