Редактор WYSIWYYG в CMS, который я использую, разбивает код iframe так, чтобы этот код
<p><iframe src="http://www.example.com" frameborder="0" width="300" height="300" scrolling="no"></iframe></p>
появляется при загрузке на страницу
<p><iframe src="http://www.example.com" frameborder="0" width="300" height="300" scrolling="no"></iframe></p>
Я исправил это, используя этот код.
$('p').each(function () {
var $this = $(this);
var tt = $this.text();
$this.html(tt.replace('<', '<').replace('>', '>'));
});
Однако, если у меня есть другие теги на странице, например
<p><strong>Strong text </strong></p>
Это также становится обнаженным, чтобы
<p>Strong text </p>
Как я могу заставить это изменение примениться только к iframes?
Я пробовал что-то подобное, но это не сработало.
$this.html(tt.replace('<iframe', '<iframe').replace('></iframe>', '</iframe>'));
Я закончил работу с использованием: содержит:
$('p:contains("iframe")').each(function () {
var $this = $(this);
var tt = $this.text();
$this.html(tt.replace('<', '<').replace('>', '>'));
});
не лучшее решение, но это работает для сайта.
Хорошо, прежде всего, попробуйте найти, где изменить настройки вашего 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);
});
попробуйте этот селектор:
$('iframe').each(function () {
var $this = $(this).parent(); // get its parent
var tt = $this.text();
$this.html(tt.replace('<', '<').replace('>', '>'));
});