аддон firefox - текстовый результат -> xml - PullRequest
1 голос
/ 02 февраля 2012

Я разрабатываю дополнение для Firefox.В настоящее время, как только он собрал необходимую информацию и выполнил некоторое количество регулярных выражений, аддон выкладывает все html, отформатированный в другой панели.Ниже приведен код, который форматирует / анализирует собранные данные регулярного выражения:

self.on("message", function onMessage(storedHistories) {
var historyList = $('#history-list');
historyList.empty();
storedHistories.forEach(
function(storedHistory) {
    var historyHtml = $('#template .history-details').clone();    
    historyHtml.find('.generator-text').text(storedHistory.generatorText);
    historyHtml.find('.selection-parent-text').html(storedHistory.anchorpText);
    historyList.append(historyHtml);
  });
 });

HTML-файл, к которому он привязывает вышеуказанные результаты, выглядит следующим образом:

 <div id="template">
   <div class="history-details">
     <div class="generator-text"></div>
     <div class="selection-parent-text"></div>    
   </div>
 </div>

Есть ли способвзять текст из JS, и вывести его в виде XML?Мне нужно, чтобы он отображал правильные контейнеры XML, а когда он отформатирован в HTML, контейнеры просто исчезают (я предполагаю, что они считаются тегами HTML).Это может быть действительно глупый вопрос, но я настоящий нуб во всем этом и почти не имею опыта работы с XML / js.Я где-то читал, что для этого можно использовать XMLhttpRequest, однако я понятия не имею, с чего начать и как это сделать.

1 Ответ

1 голос
/ 02 февраля 2012

Вы правы, предполагая, что браузер будет рассматривать тег XML как элемент и просто отображать содержимое тега.Чтобы браузер также отображал теги, вам необходимо закодировать XML как HTML (например, < становится &lt;).Самый простой способ сделать это, поскольку вы уже используете jQuery (и предполагаете, что storedHistory.generatorText и storedHistory.anchorpText являются строками XML), это изменить эти две строки:

historyHtml.find('.generator-text').text(storedHistory.generatorText);
historyHtml.find('.selection-parent-text').html(storedHistory.anchorpText);

на:

historyHtml.find('.generator-text').text($('<div />').text(storedHistory.generatorText).html());
historyHtml.find('.selection-parent-text').text($('<div />').text(storedHistory.anchorpText).html());

См. HTML-кодировка теряется при чтении атрибута из поля ввода для получения дополнительной информации.

Надеюсь, это поможет.

...