我在 JupyterHub 环境中工作,我用它来渲染应用程序。
其中一个特定的应用程序应该是一种启动器,用户可以在其中启动(打开)另一个 chrome 选项卡中的特定 url 网络。
我使用以下代码:
import ipyvuetify as vue
from ipywidgets import Output
from IPython.display import Javascript
out=Output()
b = vue.Btn(color='primary',children=['open tabs'])
def on_click(widget, event, data):
# generate an URL
url_nyt = "https://www.nytimes.com/"
url_news = "https://www.cnn.com"
with out:
print('go')
# VEEEEEEEERRRRY important: inside out
display(Javascript(f'window.open("{url_nyt}");'))
print('first')
with out:
display(Javascript(f'window.open("{url_news}");'))
print('second')
# this does not work neither: display(Javascript(f'window.open("{url_nyt}");window.open("{url_news}")'))
b.on_event('click', on_click)
display(b,out)
这仅适用于第一个 url。发生的情况是确实打开了一个新选项卡,并且 nyt 网站在那里打开,但没有打开第二个选项卡。尽管如此,在输出小部件中可能会看到“第二个”,因此第二个显示已运行,没有给出错误,但没有工作。
知道为什么会这样吗?或者任何解决方法?有必要在后台打开标签吗?如何?
顺便说一句,库 webbrowser 不起作用,因为这是 jupyterHub(在远程服务器中)而不是本地 jupyter lab 发行版。
谢谢