R
3.0.1 とShiny
0.7.0 を使用して、光沢のある Web ページを作成していますHTML UI
。
要素のOnLoad()
イベントに関して、Shiny の制限またはバグと思われるものに遭遇したようです。body
Shiny は複数の HTML ページに対応していないため、Joe ChengがここでjQuery
述べているように、必要に応じて表示と非表示を切り替えるために使用しようとしていますdivs
。
OnLoadイベントで div を非表示にする場合を除いて、これはかなりうまく機能します。その場合、reactive input components
によって検出されなくなったようShiny
です。
以下に、このテスト ケースを示します。
サーバー.R
library(shiny)
shinyServer(function(input, output) {
output$caption <- renderText({input$myInput})
})
index.html
<head>
<script src="shared/jquery.js" type="text/javascript"></script>
<script src="shared/shiny.js" type="text/javascript"></script>
<script type="text/javascript" src="js/library.js"></script>
</head>
<body onload="initForm();">
<div id="dMenu">
<a href="#" onclick="showFoo();">Show foo div</a>
<br>
<a href="#" onclick="showBar();">Show bar div</a>
</div>
<!-- some random div -->
<div id="foodiv">This is the Foo div</div>
<!-- div with reactive input -->
<div id="bardiv">
This is the Bar div
<br>
<input type="text" id="myInput" class ="shiny-bound-input" name="myInput" autocomplete="off">
<div id="caption" class="shiny-text-output shiny-bound-output"></div>
</div>
</body>
library.js
function showFoo(){
$('#foodiv').show();
$('#bardiv').hide();
}
function showBar(){
$('#foodiv').hide();
$('#bardiv').show();
}
function initForm(){
/*showFoo(); */
}
このコードをそのまま使用すると、Shiny はコンポーネントの変更に反応し、myInput
それらをコンポーネントに書き込みcaption
ます。一方、その中のコードをコメントアウトするinitForm()
と、何を書いても反応しなくなりますmyInput
。
これを Firefox 23.0.1 でテストしました。
私が何か間違ったことをしているかどうかは誰にも分かりますか?