0

OK、これはブックマークのリストを維持するために私が使用しているコードです:

    var newBookmark="<mark text='"+$(this).siblings(".newbookmarktext").val()+"' page='"+page+"' />";
    if ($(xmlDoc).find("file[name='"+file+"']").length==0)
        $(xmlDoc).children("bookmarks").first().append("<file name='"+file+"'/>");
    $(xmlDoc).find("file[name='"+file+"']").first().append(newBookmark);

これをFirefoxで実行すると、完全に実行され、ファイル名エントリの下に新しいブックマークがリストに追加されます。

ただし、Chrome (およびその他の Webkit ブラウザー) では機能しません。私が知る限り、エントリの追加は機能していません。追加するxmlは問題ありません-ファイルは単なるファイル名ですが、実行されません。

Append が機能しないという他の SE エントリを調べましたが、それらは html の問題と問題のようです。このようなjqueryメソッドがブラウザ間で機能しないことを示す他の兆候は見つかりません。

4

2 に答える 2

0

OK、問題は見つかりましたが、完全には理解できません。追加されたエントリを JQ 値にすると、うまくいくようです。私のコードは次のようにする必要があります:

var newBookmark=$("<mark text='hello' page='1' />");
if ($(xmlDoc).find("file[name='"+file+"']").length===0)
    $(xmlDoc).children("bookmarks").first().append($("<file name='"+file+"'/>"));
$(xmlDoc).find("file[name='"+file+"']").first().append(newBookmark);

Chrome/webkit ブラウザーで実行する場合。

于 2013-08-18T14:31:34.680 に答える
0

私も同じ問題を抱えてる。Firefox は正常に動作しましたが、chrome は私の xml スニペットを追加しませんでした。すべてを試しました。最後に、Chrome と Firefox の両方で機能するソリューションを用意しました。これが機能しなかった私の元のコードであり、その下に解決策があります:

 var xml = $.parseXML(o.text);
 $(xml).find('documentGroups').append('<documentGroup documentGroupID="0" name="Default Group"/>');

上記は失敗しますが、以下は機能します。ノードを挿入するには、ノードを同じ XML ドキュメントのメンバーとして作成する必要があり、上記のコードは別の XML ドキュメントに新しい documentGroup ノードを作成するためだと思います。以下のコードは、挿入先と同じ XML ドキュメント内にノードを強制的に作成します。

 var xml = $.parseXML(o.text);
 var defaultGroup = xml.createElement('documentGroup'); 
 $(defaultGroup).attr('documentGroupID', '0').attr('name', 'Default Group');
 $(xml).find('documentGroups').append(defaultGroup);

これは JQuery 内で修正する必要があると思います。最初のすべてが jQuery の構文を使用すると、Firefox はノードを問題なく挿入します。クロムもそうすべきです。そうでなければ、jQuery はその構文をクロスブラウザーで機能させるという目標を達成していません。jQuery は素晴らしいですが、それを叩くつもりはありません。問題がどこにあると思うかについてコメントするだけです。

$('<node/>')また、他の場所で、構文 jQuery はブラウザの XML パーサーの代わりに innerHTML を使用して文字列を解析するというコメントを見てきました。これにより、HTML 以外の構文が正しく解析されなくなります。

于 2013-09-23T14:05:34.310 に答える