选项 1
当想要在点击时在新选项卡中打开链接并且只希望它在仪表板上的某些图块上时,以下方法将起作用:
onClick="javascript: window.open('http://url', '_blank');"
例如,在您的dashboard.erb 文件中,您将拥有以下内容:
注意: 在这个例子中我有Switcher 设置(需要安装dashing-contrib),并用于在使用不同小部件的2个图块之间切换(@ 987654323@ 和默认列表)。这将适用于创建的任何图块。这正是我碰巧使用它的地方。
<% content_for :title do %>Dashboard Name<% end %>
<div class="gridster">
<ul>
<li data-switcher-interval="5000" data-row="1" data-col="1" data-sizex="1" data-sizey="1" onClick="javascript: window.open('http://www.stackoverflow.com', '_blank');">
<div data-id="data-id-name from .rb job" data-view="Hotness" data-title="Title of Widget" data-moreinfo="more information text" data-cool="1" data-warm="30"></div>
<div data-id="data-id-name from .rb job" data-view="List" data-unordered="true" data-title="Title of Widget" data-moreinfo="more information text"></div>
<i class="fa fa-warning icon-background-small"></i>
</li>
</ul>
</div>
选项 2
另一种方法是在 dashboard.erb 的顶部添加一个函数。
注意:如果没有为磁贴提供 url 链接,此示例将使所有磁贴都可点击并打开一个空白选项卡,因此它不是理想的解决方案,但确实有效*
$(function bringToTop() {
$('li').live('click', function(e){
var widget = $(this).find('.widget');
if(widget.data('url')){
var url = widget.data('link');
var win = window.open(url, '_blank');
win.focus();
}
});
});
所以你的整个dashboard.erb 文件应该是这样的:
<script type='text/javascript'>
$(function bringToTop() {
$('li').live('click', function(e){
var widget = $(this).find('.widget');
if(widget.data('url')){
var url = widget.data('link');
var win = window.open(url, '_blank');
win.focus();
}
});
});
</script>
<% content_for :title do %>Dashboard Name<% end %>
<div class="gridster">
<ul>
<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
<div data-id="mydata" data-view="Hotness" data-title="Data Title" data-cool="20" data-warm="1000" data-link='http:\\www.stackoverflow.com'></div>
</li>
</ul>
注意:
我尚未测试但在网上搜索时发现,使用我提供的上述任一选项可能无法在 iOS 设备上运行。这个问题可能已经解决了,而且我不会以任何方式敲击 Gridster,它与 Gridster 相关。 Gridster 那边有一个Open issue for click events on iOS devices。
感谢 GitHub 上的 Phylor 提供临时修复/解决方案,该解决方案已于 2016 年 2 月 21 日确认有效(不是我本人)。
只需将以下内容添加到您的 dashboard.erb 文件的顶部:
<script type='text/javascript'>
function openUrl(obj) {
var widget = $(obj).find('.widget');
var url = widget.data('url');
window.open(url, '_blank');
}
$(function() {
$('li').live('click', function(e){
openUrl(this);
});
$('li').live('touchend', function(e){
openUrl(this);
});
});
</script>
这是我的第一篇文章,因此对于任何格式错误,我深表歉意,但我认为是时候开始回馈帮助我的社区了。希望这会有所帮助!