在 TinyMCE 中将沙箱属性强制为特定值

Forcing sandbox attribute to specific value in TinyMCE

我正在使用 TinyMCE 作为所见即所得的编辑器,我试图让它始终向它找到的每个 iframe 添加沙箱属性,并将其重置为特定值,例如“allow-scripts allow-同源”。

我试过添加到 valid_elements:

"iframe[名称|src|srcdoc|seamless

但是没用;还有

"iframe[名称|src|srcdoc|无缝<无缝|宽度|高度|沙盒:允许脚本]"

好像不行;我试过

"iframe[名称|src|srcdoc|无缝<无缝|宽度|高度|沙盒:]"

如果缺少沙箱属性,它会正确添加,但如果该属性已经存在,则不会将其值替换为空值,正如我所期望的那样...

我做错了什么?

谢谢!

您可以尝试添加一个 node filter. The setup function 这样应该可以完成工作:

setup: function(editor) {
  editor.on('PreInit', function() {
    editor.parser.addNodeFilter('iframe', function(nodes) {
      nodes.forEach(function(node) {
        node.attr('sandbox', 'allow-scripts allow-same-origin');
      });
    });
  });
}

它会在解析时获取每个 iframe,并强制将相关的沙箱属性设置为您想要的。

P.S。同时使用 allow-scriptsallow-same-origin 属性是 not a recommended practice(请参阅属性说明下方的注释)。