代码之家  ›  专栏  ›  技术社区  ›  Uri Goren

复制到Jupyter笔记本中的剪贴板

  •  5
  • Uri Goren  · 技术社区  · 6 年前

    我想在jupyter notebok中实现一个剪贴板副本。

    Jupyter笔记本正在远程运行,因此我无法使用 pandas.to_clipboard pyperclip 我必须使用 javascript

    这就是我想到的:

    def js_code_copy(content)
        return """
    var body = document.getElementsByTagName('body')[0];
    var tmp_textbox = document.createElement('input');
    body.appendChild(tmp_textbox);
    tmp_textbox.setAttribute('value', '{content}');
    tmp_textbox.select();
    document.execCommand('copy');
    body.removeChild(tmp_textbox);
    """.format(content=content.replace("'", '\\'+"'"))
    

    请注意,如果我在浏览器的控制台中运行代码,它会做应该做的事情。

    但是,如果我在Jupyter运行它:

    from IPython.display import display, Javascript
    content = "boom"
    display(Javascript(js_code_copy("Copy me to clipboard")))
    

    没有效果,

    有什么想法吗?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Bennett Hardwick    6 年前

    出于安全原因,您的浏览器禁止使用 document.execCommand 如果用户操作(例如单击按钮)未调用该方法。

    由于您正在页面上注入和运行JavaScript,因此这不被视为用户操作。

        2
  •  -1
  •   Seth Wahle    6 年前

    你可以尝试使用 selenium phantomJS 在后台的无头浏览器中运行代码。

    推荐文章