仅替换iframe的编码字符Jquery

时间:2013-12-17 01:57:45

标签: javascript jquery html iframe

我正在使用的CMS中的WYSIWYYG编辑器正在删除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>

如何才能将此更改仅应用于iframe?

我尝试了类似的东西,但它没有用。

$this.html(tt.replace('&lt;iframe', '<iframe').replace('&gt;&lt;/iframe&gt;', '</iframe>'));

3 个答案:

答案 0 :(得分:2)

我最终通过使用以下方式使其工作:包含例如

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

不是最好的解决方案,但这适用于网站所用的内容。

答案 1 :(得分: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);
});

答案 2 :(得分:0)

尝试这个选择器:

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