2011-03-25 27 views
0

我遇到了一个有趣的问题,我害怕可能是Safari的错误,或者我只是没有看到。XMLDocument(通过jQuery ajax调用)存储为localStorage中的字符串结果Safari没有找到标题元素

我有一个“游戏”元素的静态XML文件。其中每一个都是“标题”元素,等等。

我通过jQuery的ajax方法拉取XML文件,传递文本的dataType,然后将结果存储在localStorage中。

如果我然后从localStorage中提取这些数据并通过jQuery解析它,我可以成功解析IE 9,Chrome 10,Opera 11,Firefox 4中XML内的所有元素。但是,在Safari 5和Safari当前为iPod Touch和iPad(均为当前版本),所有元素都以作为标题元素的文本(XML内)的例外输出。

编辑:如果将元素从“标题”更改为“标题”以及“名称”,则会发生同样的情况如果我将其更改为'xName'之类的信息,那么信息就会很好,所以我的代码看起来没问题。

相关的jQuery电话:

$(document).ready(function() { 
    $.ajax({ 
     url: "/xml/video_games.xml", 
     dataType: 'text', // We'll grab it as text, so we can save it into localStorage 
     success: function (data) { 
      videoGameXml = data; 
      localStorage['VideoGameXml'] = videoGameXml; 
      addDataToPage(videoGameXml); 
     } 
    }); 
}); 

addDataToPage:

function addDataToPage(data) { 
    $('#MainData').hide(); 
    var htmlOutput = "<ol>"; 
    try { 
     $(videoGameXml).find("game").each(function() { 
      if ($(this).attr('addOn') != "true" && $(this).find('own').text() == "yes") { 
       // Displays console and version elements, but not the title. 
       htmlOutput += "<li><strong>" + $(this).find('title').text() + "</strong> for the " + $(this).find("console").text() + " " + $(this).find("version").text() + "</li>"; 
      } 
     }); 
    } catch (e) { 
     JamesRSkemp.dumpObject(e); 
    } 
    htmlOutput += "</ol>"; 
    $('#MainData').html(htmlOutput); 
    $('#MainData').show(); 
} 

如果我恢复并跳过localStorage的一步然后标题正确显示。但是,这并没有太大的帮助,因为该页面的目的是可用离线,我宁愿使用所有当前浏览器支持的内容。

我也从静态XML文件中提取数据,因此将数据更改为JSON必须在页面上完成,否则我必须设置服务来解析XML并返回JSON。如果需要的话,我并不反对做其他事情,但是...我宁愿改变元素名称。

我也不反对将输出HTML存储到localStorage而不是XML数据,但我宁愿让所有的XML都可用,而不仅仅是我现在选择输出的内容(对于额外的在路上的功能)。

您可以在http://media.jamesrskemp.com/xmlHtml/video_gamesSO.html

回答

1

看到这样一个工作版本我写了一篇博客文章中针对此 - Interesting feature with parsing XML with jQuery on Safari - 但基本上代替了以下内容:

$(videoGameXml).find("game").each(...); 

我需要有:

$($.parseXML(videoGameXml)).find("game").each(

Safari需要额外的代码才能将字符串正确解析为XML。

相关问题