【问题标题】:R Shiny html canvas not initialized untill page rescaleR Shiny html画布在页面重新缩放之前未初始化
【发布时间】:2020-11-07 09:23:53
【问题描述】:

我正在尝试使用 includeHTML() 将带有画布的 HTML 页面集成到闪亮的 R 应用程序中。我使用 shiny ,shinydashboard, shinycssloaders, dplyr 和 DT 作为包。

效果很好,只是画布没有被初始化并且是一个带有 html 属性的白色方块

canvas width="0" height="0" style="width: 0px; height: 0px;">

当我打开 Chrome 检查或重新缩放我的浏览器窗口时,它突然出现并具有属性

canvas width="592" height="353" style="width: 591.5px; height: 353.297px;">

有没有办法解决这个问题,例如刷新画布还是模仿重新缩放?

我已经尝试删除所有 CSS 并比较缩放前后的 html,但没有任何效果。

【问题讨论】:

    标签: javascript html css shiny html5-canvas


    【解决方案1】:

    尝试使用一些 JavaScript 触发 resize 事件。可能是这样的:

    js <- "
    $(document).ready(function(){
      window.dispatchEvent(new Event('resize'));
    });
    "
    

    在您的闪亮 UI 中:

    ui <- fluidPage(
      tags$head(tags$script(HTML(js))),
      ......
    )
    

    编辑

    根据您的评论,这不起作用。也许:

    js <- "
    $(document).ready(function(){
      setTimeout(function(){window.dispatchEvent(new Event('resize'));}, 0);
    });
    "
    

    js <- "
    $(document).on('shiny:connected', function(){
      setTimeout(function(){window.dispatchEvent(new Event('resize'));}, 0);
    });
    "
    

    【讨论】:

    • 感谢您的回答,但在我手动重新缩放之前它仍未初始化。是否有其他方法可以模仿重新缩放或刷新画布?
    • @simonmarien 查看我的编辑。你能试试吗?否则,您应该提供有关 HTML 文件内容的更多信息。
    • 斯蒂芬·洛朗。非常感谢您的帮助,第一个超时时间为 500。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 2019-05-02
    • 2020-07-19
    相关资源
    最近更新 更多