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