0

我在 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 发行版。

谢谢

4

0 回答 0