Заменить закодированные символы только для iframes Jquery

0

Редактор WYSIWYYG в CMS, который я использую, разбивает код iframe так, чтобы этот код

<p><iframe src="http://www.example.com" frameborder="0" width="300" height="300" scrolling="no"></iframe></p>

появляется при загрузке на страницу

<p>&lt;iframe src="http://www.example.com" frameborder="0" width="300" height="300" scrolling="no"&gt;&lt;/iframe&gt;</p>

Я исправил это, используя этот код.

$('p').each(function () {
    var $this = $(this);
    var tt = $this.text();
    $this.html(tt.replace('&lt', '<').replace('&gt', '>'));
});

Однако, если у меня есть другие теги на странице, например

<p><strong>Strong text </strong></p>

Это также становится обнаженным, чтобы

<p>Strong text </p>

Как я могу заставить это изменение примениться только к iframes?

Я пробовал что-то подобное, но это не сработало.

$this.html(tt.replace('&lt;iframe', '<iframe').replace('&gt;&lt;/iframe&gt;', '</iframe>'));
Теги:
iframe

3 ответа

2
Лучший ответ

Я закончил работу с использованием: содержит:

$('p:contains("iframe")').each(function () {
    var $this = $(this);
    var tt = $this.text();
    $this.html(tt.replace('&lt', '<').replace('&gt', '>'));
});

не лучшее решение, но это работает для сайта.

1

Хорошо, прежде всего, попробуйте найти, где изменить настройки вашего RTE. Это распространенная проблема, и вы должны иметь возможность контролировать, какие теги разрешены.

Если вы действительно хотите взломать его с помощью jQuery, вы можете создать свой шаблон, например:

<p class="iframeMe" data-src="http://iframe-source" data-width="500" data-height="500"> Iframe will appear here </p>

$('.iframeMe').each(function () {
    var $this = $(this);
    var $iframe = $('<iframe />').attr('src', $this.data('src')).attr('width', $this.data('width')).attr('height', $this.data('height'));
    $this.append($iframe);
});
0

попробуйте этот селектор:

$('iframe').each(function () {
    var $this = $(this).parent(); // get its parent
    var tt = $this.text();
    $this.html(tt.replace('&lt', '<').replace('&gt', '>'));
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню