在jquery中附加到XML不能在Chrome中运行

时间:2013-08-17 11:07:21

标签: jquery xml webkit

好的,这是我正在使用的代码,用于维护书签列表:

    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很好 - 文件只是一个文件名 - 但它不会运行。

我查看了其他SE条目的Append not working,但它们似乎是html问题和问题。我找不到任何其他类似jquery方法的迹象,不适用于浏览器。

2 个答案:

答案 0 :(得分:0)

好的,我发现了问题,但我并不完全明白。如果我添加条目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浏览器中运行。

答案 1 :(得分: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中修复。使用第一个all-jQuery语法,Firefox插入节点就好了。 Chrome也应该;否则,jQuery无法实现其语法跨浏览器工作的目标。 jQuery很棒,我不是故意要敲它。只是评论我认为问题所在。

另外,我在其他地方看到用$('<node/>')语法评论jQuery使用innerHTML来解析字符串而不是浏览器的XML解析器,这会阻止非HTML语法正确解析。