【问题标题】:R: reload google chrome URL if already loadedR:如果已经加载,则重新加载谷歌浏览器 URL
【发布时间】:2021-05-17 01:46:31
【问题描述】:

我正在使用 Rscript 通过browseURL("myfile.html") 使用 Google Chrome 加载 .html 文件。但是,我希望 Rscript 首先检查 URL 是否已在 Chrome 中打开,如果是,只需重新加载 URL。我不希望它在新的 Chrome 选项卡中打开 URL。有没有办法做到这一点?

【问题讨论】:

  • 是否可以选择关闭 Chrome,然后打开一个新实例?如果它没有打开,这将什么都不做,如果另一个关闭,则打开一个新版本。
  • @mhovd 如果没有其他解决方法可以解决问题,是的
  • 我会在 html 文件中添加重新加载。如果它打开,它会每隔几分钟重新加载一次。你会在这里找到有用的信息:stackoverflow.com/questions/8711888/…
  • 感谢您的建议。然而在实践中,Rscript 也会生成 html 文件(它是通过 Rmarkdown 生成的报告),因此我还需要能够在每次想要更新 html 文件时运行 Rscript。
  • 解决方法:有几个浏览器扩展可用于防止重复选项卡。请参阅thisthis

标签: r google-chrome browser


【解决方案1】:

您可以在一些第三方组件的帮助下开始工作。

当您调用 Rscript 的 browseURL 函数时,它只是运行它认为是浏览器的任何程序并将您的 URL 传递给它。你可以告诉它使用你想要的任何“浏览器”:

browseURL("file:/path/to/my/file.html",
          browser = "/path/to/chrome_reloader.sh")

您可以使用Chromix Too 包来控制Chrome。您将需要安装一些东西,但这很简单,只需几分钟:

  1. 从 Chrome 网上商店安装 Chromix Too 扩展程序。
  2. 安装最新版本的 NodeJS。
  3. 使用npm(随NodeJS安装)也安装Chromix。
  4. 运行 Chromix Too 服务器。

现在您可以运行 chromix-too ls 之类的命令来查看您在 Chrome 中打开的所有选项卡的列表,并使用 chromix-too reload http://some.web.site/ 重新加载其中一个。

现在您可以编写 chrome_relauncher.sh 脚​​本,该脚本只需将它获得的任何 URL 传递给 chromix-too reload

#!/bin/bash
chromix-too reload $1

看起来reload 只会重新加载一个已经存在的标签,但不会打开一个新标签。您可以使用ls 命令首先检查选项卡是否存在;看起来chromix-too ls 'http://some.site/path' 如果选项卡存在则返回成功 (0),如果不存在则返回失败 (1),因此您可以在脚本中使用它。或者在运行 Rscript 程序之前手动打开选项卡。还有一个 file 命令加载本地文件,并明确表示它将重用和重新加载现有选项卡。

您可能需要调整一些东西(也许添加到chromix-too 的路径,您可以使用which chromix-too 获得)但这基本上应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多