在Jupyter Notebook中复制到剪贴板

5

我希望在jupyter笔记本中实现剪贴板复制功能。

jupyter笔记本是在远程运行的,因此我无法使用pandas.to_clipboardpyperclip,我必须使用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")))

什么都不起作用,

有任何想法吗?


1
你想复制到哪个剪贴板?是想要当前所在机器上的信息,还是远程托管Jupyter实例的机器上的信息? - Seth Wahle
你看过这个了吗?https://dev59.com/yqXja4cB1Zd3GeqPUqkQ - fcsr
@SethWahle,我正在尝试设置运行浏览器的计算机的剪贴板(而不是托管jupyter的计算机) - Uri Goren
2个回答

4

出于安全考虑,如果document.execCommand方法不是由用户操作(例如点击按钮)触发的,则您的浏览器会禁用其使用。

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


-1
你可以尝试使用 seleniumphantomJS 在后台运行代码,以无头浏览器的方式执行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接