Joh*_*aul 3 javascript r shiny
我正在构建一个R Shiny应用程序,有时会看到独立,有时会在另一个网页的iframe中查看.我想根据查看的位置有一个不同的.css文件,所以我需要添加一个JavaScript语句来选择正确的.css.我现在拥有的是:
ui.r
headerPanel(winowTitle="PageTitle",
list(tags$head(
tags$script('type = "text/javascript", if(window.self === window.top) {
tags$link(rel="stylesheet", type="text/css", href="FullSite.css")}
else{ tags$link(rel="stylesheet", type="text/css", href="InFrame.css"})'),
(other stuff that works)), etc
Run Code Online (Sandbox Code Playgroud)
当我运行它时应用程序工作,但它不读取.css文件.我究竟做错了什么?
谢谢
这是一种方法.我已经取代了R代码里面script有javascript.第一行使用javascript中的三元运算符将样式表的值设置为适当的值.
list(tags$head(tags$script('type = "text/javascript",
stylesheet = window.self === window.top ? "FullSite.css" : "InFrame.css"
$("head").append("<link rel=stylesheet type=text/css href=" + stylesheet + ">")
')))
Run Code Online (Sandbox Code Playgroud)
更新:这是动态添加样式表的更好方法.我用过这个SO帖子来修改我的答案.
list(tags$head(tags$script('type = "text/javascript"', '
var ss = document.createElement("link");
ss.type = "text/css";
ss.rel = "stylesheet";
ss.href = window.self === window.top ? "FullSite.css" : "InFrame.css"
document.getElementsByTagName("head")[0].appendChild(ss);
')))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |