Нужно конвертировать%amp; просто и в отдер для сценария работать

Я конвертирую веб-сайт в modx, в котором используется java-оболочка для динамического извлечения контента и его отображения без перезагрузки страницы. Основы сайта есть, но у меня небольшая проблема с сгенерированными ссылками, и я не уверен, что это лучший способ обойти это.

Я не писал оригинальный javascript, который использует сайт, я просто пытаюсь немного его изменить, чтобы modx использовал нужные части.

Вот пример шаблона, который я использую для перехода на следующую / предыдущую страницу.

 <div id="next"></div>
 <script type="text/javascript">
 $(function() 
    {
    setNext('[[+href]]');
    var page_content_height = $('#page_content').height();
    }
 );
 </script>

В основном сгенерированные ссылки на modx имеют следующий формат на странице:

 setNext('nb/index.php?id=17&amp;page=2');

Чтобы они работали, они должны быть:

 setNext('nb/index.php?id=17&page=2');

На сайтах, использующих jquery, я подумал, что может быть способ заставить это преобразовать текстовые строки до того, как он отобразит страницу?

Надеюсь, что кто-то может указать мне правильное направление, потому что я немного озадачен.

3 ответа

Решение

Это бы сработало

var str = 'nb/index.php?id=17&amp;page=2'
str = str.replace(/&amp;/g, '&');
setNext(str);
setNext(htmlDecode('nb/index.php?id=17&amp;page=2'));

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}

Смотрите unescape html сущностей в javascript

ИМО, было бы лучше исправить это в источнике, чем "исправлять" в браузере.

В худшем случае, вы можете сделать это на PHP следующим образом:

$href = 'nb/index.php?id=17&amp;page=2';
$modx->setPlaceholder('href', str_replace('&amp;', '&', $href));

Однако, если ссылка была создана с использованием MODX makeUrl() метод, то он должен быть уже правильно отформатирован.

Другие вопросы по тегам