2013-09-26 2 views
2

Краткая информация. Я пытаюсь создать генератор содержимого бюллетеня, который использует XML-канал в качестве источника. Чтобы он работал, я должен подготовить каждый элемент узла XML, чтобы он соответствовал макету рассылки новостей.SCRIPT5022: элемент добавления WrongDocumentError в IE

Я использую этот метод, чтобы объединить 2 смежных XML-элементов в единый узел группы:

element_getter: function(xml) { 

var deals = $(xml).find('campaign:eq(0) deal'); 

    deals = $.map(deals, function(val, index){ 

     if (index % 2 == 1) return; 


     var group = $(document.createElement('group')); 

     $(group).append(deals[index]); 

      if (deals[index+1]) 
       $(group).append(deals[index+1]);   

      return group; 
     }); 

     return deals; 
    } 

проблема возникает с IE. Когда я пытаюсь создать новый узел в документе или добавить в него какой-либо контент, я получаю SCRIPT5022: WrongDocumentError (этого не происходит с FF или Chrome) Я уже пытался добавить этот элемент по-разному (например, $ .parseXML), но это не делает трюк.

Любые идеи?

Вот пример источника XML:

<ebi-cmp-list version="1"> 
<campaign id="2"> 
    <title>Campaign</title> 
    <startTime ts="201309090600">2013-09-09 06:00</startTime> 
    <endTime ts="201309102359">2013-09-10 23:59</endTime> 
    <type id="2">spec_offer</type> 
    <deals> 
     <deal id="15814"> 
      <event id="15814">Test Event</event> 
      <venue id="429">Arena</venue> 
      <city id="20">Berlin</city> 
      <category id="73">Shows</category> 
      <time ts="201310122000">2013-10-12 20:00</time> 
      <price> 
       <oldPrice currency="EUR">113.00</oldPrice> 
       <newPrice currency="EUR">113.00</newPrice> 
      </price> 
      <ticketsLeft>26</ticketsLeft> 
      <link rel="img">http://www.example.com</link> 
      <link rel="event">http://www.example.com</link> 
     </deal> 
     <deal id="15814"> 
      <event id="15814">Test Event</event> 
      <venue id="429">Arena</venue> 
      <city id="20">Berlin</city> 
      <category id="73">Shows</category> 
      <time ts="201310122000">2013-10-12 20:00</time> 
      <price> 
       <oldPrice currency="EUR">113.00</oldPrice> 
       <newPrice currency="EUR">113.00</newPrice> 
      </price> 
      <ticketsLeft>26</ticketsLeft> 
      <link rel="img">http://www.example.com</link> 
      <link rel="event">http://www.example.com</link> 
     </deal> 
    </deals> 
</campaign> 

+1

Я удивлен, что другие браузеры не жалуются, потому что обычно вы не можете просто присоединить узел, принадлежащий к одному документу (вашему XML), другому документу (ваш HTML-документ) - вы можете только добавлять узлы в узел, который имеет тот же ownerDocument. Попробуйте импортировать ваши узлы XML в «область видимости» вашего документа HTML с [importNode] (https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode). – CBroe

+0

@CBroe, вы совершенно правы. document.importNode работал отлично. – xb1itz

+0

ОК, добавлено в качестве ответа. – CBroe

ответ

2

Я удивлен, что другие браузеры не жалуются, потому что обычно вы не можете просто присоединять узел, который принадлежит к одному документу (ваш XML) в другой документ (ваш HTML-документ) - вы можете только добавлять узлы в узел с таким же документом ownerDocument.

Попробуйте импортировать узлы XML в область «HTML» вашего документа с importNode.

Смежные вопросы