通过jquery创建沙盒iFrame

时间:2017-05-03 10:05:27

标签: javascript jquery html iframe sandbox

我正在尝试使用jQuery创建一个没有任何权限的iFrame。 我能够添加iFrame属性,但它需要一个值。我通过添加空值('')来使用脏解决方案,但这是正确的方法吗? 有没有更好的方法来创建无权限的沙盒iFrame?



$(function() {
  $('article').each(createIFrame);
});

function createIFrame() {
  setArticleContent($(this), 'hello sandbox');
}

function setArticleContent(article, content) {
  article.find('span>p').first().text('');
  $('<iframe>', {
    srcdoc: '<p>' + content + '</p>',
    frameborder: '0',
    sandbox: ' ',
    style: 'background:#00FF00',
  }).appendTo(article.find('span>p').first());
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<article>
  <span>
        <p>helloworld</p>
      </span>
</article>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

  

我通过添加空值('')来使用脏解决方案,但这是正确的方法吗?

它根本不脏,但是你应该注意到根据规格你应该使用空字符串:

  

属性的值可以是空字符串(应用所有限制),也可以是以空格分隔的标记列表,这些标记可以解除特定限制

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox

$('<iframe>', {
  srcdoc: '<p>' + content + '</p>',
  frameborder: '0',
  sandbox: '', // note the space was removed
  style: 'background: #00FF00',
}).appendTo(article.find('span>p').first());

理想情况下,style也应通过外部样式表设置。