光沢のあるアプリでMutationObserveを正しく使用する方法

フランク

ShinyのjavascriptmutationObserverを使用してcssへの変更を観察しようとしています。rhandsontableアプリでテーブル要素の幅を変更できるため、使用しています。この変更をmutationObserverで取得しようとしています。

javascriptが機能していないようです。理由はわかりません。コンソールには何も記録されず、アラートメッセージも表示されず、shinyはjavascriptによって設定されている変数を登録しません。

MutationObserverコード

jsCode <- "
    const observer = new MutationObserver(
      # this function runs when something is observed.
      function(mutations){
        console.log('activated')
        var i;
        var text;
        var widthArray = [];
        text = ''
        for (i = 0; i < document.getElementsByClassName('htCore')[0].getElementsByTagName('col').length; i++) {
          text += document.getElementsByClassName('htCore')[0].getElementsByTagName('col')[i].style.width + '<br>';
          widthArray.push(document.getElementsByClassName('htCore')[0].getElementsByTagName('col')[i].style.width);
        }
        alert(text)
        Shiny.setInputValue('colWidth', widthArray);
      }
    )
    const cols = document.getElementsByClassName('htCore')[0].getElementsByTagName('col')
    observer.observe(cols, {
      attributes: true # observe when attributes of ul.bears change (width, height)
    })
"

光沢のあるコード:

library(shiny)
library(rhandsontable)

ui <- fluidPage(
  tags$head(tags$script(HTML(jsCode))),
  rhandsontable::rHandsontableOutput("dataTable")
)
server <- function(input, output, session) {
    df = data.frame(
        company = c('a', 'b', 'c', 'd'),
        bond = c(0.2, 1, 0.3, 0),
        equity = c(0.7, 0, 0.5, 1),
        cash = c(0.1, 0, 0.2, 0),
        stringsAsFactors = FALSE
    )
  output$dataTable <- renderRHandsontable({
      rhandsontable(df, manualColumnResize = TRUE, manualRowResize = TRUE)
    })
  observeEvent(input$colWidth, {
    print(input$colWidth)
  })
}
shinyApp(ui, server)


ステファン・ローレント

これは機能します:

jsCode <- "
$(document).on('shiny:connected', function(){
  setTimeout(function(){
    const observer = new MutationObserver(
      function(mutations){
        console.log('activated')
        var i;
        var text;
        var widthArray = [];
        text = ''
        for (i = 0; i < document.getElementsByClassName('htCore')[0].getElementsByTagName('col').length; i++) {
          text += document.getElementsByClassName('htCore')[0].getElementsByTagName('col')[i].style.width + '<br>';
          widthArray.push(document.getElementsByClassName('htCore')[0].getElementsByTagName('col')[i].style.width);
        }
        alert(text)
        Shiny.setInputValue('colWidth', widthArray);
      }
    )
    const cols = document.getElementsByClassName('htCore')[0].getElementsByTagName('colgroup')[0]
    observer.observe(cols, {
      attributes: true, subtree: true 
    });
  }, 500);
});
"

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

光沢のあるアプリでMutationObserveを正しく使用する方法

分類Dev

光沢のあるアプリで親URLを取得する方法

分類Dev

Rの光沢のあるアプリでelseを使用する

分類Dev

光沢のあるアプリでggvisを使用して散布図を作成する

分類Dev

光沢のある: 光沢のあるアプリにリアクティブ バーを追加する方法

分類Dev

Windowsで光沢のあるアプリをホストする

分類Dev

RStudioを疑似光沢のあるアプリとして使用する

分類Dev

光沢のあるアプリを終了して値を返す方法

分類Dev

光沢のあるアプリでプロット警告を抑制します

分類Dev

光沢のあるアプリでobserveEventを使用してプロットを表示する

分類Dev

ggplotly()を使用して光沢のあるアプリでplotlyProxy()を使用して、プロットのレンダリングを高速化する方法

分類Dev

光沢のあるアプリの入力値を `actionButton`で更新します

分類Dev

r光沢のあるアプリで{gtsummary}パッケージを使用する方法

分類Dev

光沢のあるアプリでRハンズオンテーブルを使用する方法

分類Dev

光沢のあるアプリでggplot2で作成された散布図が正しく表示されない

分類Dev

光沢のあるアプリケーションでrChartsを使用してラベルを修正する

分類Dev

光沢のあるプロットプロットを正しく出力する方法は?

分類Dev

ローカルデータを使用する光沢のあるアプリをデプロイする方法

分類Dev

光沢のあるアプリでrenderDataTableとrenderImageを組み合わせる方法

分類Dev

光沢のあるアプリでfileInputをリセットする

分類Dev

光沢のあるアプリで選択リストを動的に更新する

分類Dev

光沢のあるアプリでHTMLプロットをレンダリングする方法

分類Dev

大きな光沢のあるアプリを整理する方法は?

分類Dev

光沢のあるアプリ:列ごとに合計を取得する方法

分類Dev

光沢のあるアプリでモーダルでdataTableOutputを表示する

分類Dev

Rの光沢のあるアプリで星を評価する

分類Dev

光沢のあるアプリでbsModalの背景を変更する

分類Dev

光沢のあるアプリでHTMLファイルを表示する

分類Dev

光沢のあるアプリで不要な負荷を回避する

Related 関連記事

  1. 1

    光沢のあるアプリでMutationObserveを正しく使用する方法

  2. 2

    光沢のあるアプリで親URLを取得する方法

  3. 3

    Rの光沢のあるアプリでelseを使用する

  4. 4

    光沢のあるアプリでggvisを使用して散布図を作成する

  5. 5

    光沢のある: 光沢のあるアプリにリアクティブ バーを追加する方法

  6. 6

    Windowsで光沢のあるアプリをホストする

  7. 7

    RStudioを疑似光沢のあるアプリとして使用する

  8. 8

    光沢のあるアプリを終了して値を返す方法

  9. 9

    光沢のあるアプリでプロット警告を抑制します

  10. 10

    光沢のあるアプリでobserveEventを使用してプロットを表示する

  11. 11

    ggplotly()を使用して光沢のあるアプリでplotlyProxy()を使用して、プロットのレンダリングを高速化する方法

  12. 12

    光沢のあるアプリの入力値を `actionButton`で更新します

  13. 13

    r光沢のあるアプリで{gtsummary}パッケージを使用する方法

  14. 14

    光沢のあるアプリでRハンズオンテーブルを使用する方法

  15. 15

    光沢のあるアプリでggplot2で作成された散布図が正しく表示されない

  16. 16

    光沢のあるアプリケーションでrChartsを使用してラベルを修正する

  17. 17

    光沢のあるプロットプロットを正しく出力する方法は?

  18. 18

    ローカルデータを使用する光沢のあるアプリをデプロイする方法

  19. 19

    光沢のあるアプリでrenderDataTableとrenderImageを組み合わせる方法

  20. 20

    光沢のあるアプリでfileInputをリセットする

  21. 21

    光沢のあるアプリで選択リストを動的に更新する

  22. 22

    光沢のあるアプリでHTMLプロットをレンダリングする方法

  23. 23

    大きな光沢のあるアプリを整理する方法は?

  24. 24

    光沢のあるアプリ:列ごとに合計を取得する方法

  25. 25

    光沢のあるアプリでモーダルでdataTableOutputを表示する

  26. 26

    Rの光沢のあるアプリで星を評価する

  27. 27

    光沢のあるアプリでbsModalの背景を変更する

  28. 28

    光沢のあるアプリでHTMLファイルを表示する

  29. 29

    光沢のあるアプリで不要な負荷を回避する

ホットタグ

アーカイブ