0

好的,这是我用来维护书签列表的代码:

    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 not working 上的其他 SE 条目,但它们似乎是 html 问题和问题。我找不到像这样的 jquery 方法不能跨浏览器工作的任何其他迹象。

4

2 回答 2

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 浏览器中运行。

于 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 可以很好地插入节点。Chrome 也应该;否则,jQuery 无法实现其语法跨浏览器工作的目标。jQuery很棒,我不是要敲它。只是评论我认为问题出在哪里。

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

于 2013-09-23T14:05:34.310 回答