IPython notebook markdown -- 允许的 HTML 标签列表是什么?我该如何更改它们?

IPython notebook markdown -- what are the list of allowed HTML tags and how can I change them?

我正在使用 IPython Notebook markdown 创建文档,它确实允许 HTML 例如 <img> 但我添加了 <object> 以包含 SVG文件,它不会出现在 IPython Notebook 输出中。我仔细检查了 IPython Notebook 的 HTML 来源,发现 IPython Notebook 服务器不提供 <object> 标签。看起来 <iframe> 标签也被清理了。

而当我自己在 IPython Notebook 之外将其转换为 HTML 文件时,它工作正常。我需要做些什么才能将 <object><iframe> 添加到允许的 HTML 标签列表中吗?


我找到了 Jupyter 的 security.js 但不确定它是在服务器上运行还是在客户端上运行,也不确定如何更改它。

我也试过文件→信任笔记本,但也没有解决问题。

我对 site-packages/notebook/static/notebook/js/main.min.js 的本地副本进行了 monkeypatched 以得到这个:

var sanitize_html = function (html, allow_css) {
    /**
     * sanitize HTML
     * if allow_css is true (default: false), CSS is sanitized as well.
     * otherwise, CSS elements and attributes are simply removed.
     */
    var html4 = caja.html4;

    if (allow_css) {
        // allow sanitization of style tags,
        // not just scrubbing
        html4.ELEMENTS.style &= ~html4.eflags.UNSAFE;
        html4.ATTRIBS.style = html4.atype.STYLE;
    } else {
        // scrub all CSS
        html4.ELEMENTS.style |= html4.eflags.UNSAFE;
        html4.ATTRIBS.style = html4.atype.SCRIPT;
    }

    /* BEGIN NEW CODE */
    var whitelist_key = html.match(/<span class="whitelist:([0-9A-Za-z-_]+)"\s+\/?>/)
    if (whitelist_key && whitelist_key[1]== /* password goes here */)
    {
        console.log("whitelist ok");
        html4.ELEMENTS.object &= ~html4.eflags.UNSAFE;
        html4.ATTRIBS['iframe::src'] = 0; 
        html4.ATTRIBS['object::data'] = 0; 
        html4.ATTRIBS['object::type'] = 0; 
    }
    /* END NEW CODE */

然后在我笔记本的单元格中添加 <span class="whitelist:mypassword" />

目前有效,我在 github 上打开了 issue #2614