Вариант 1
Ниже будет работать, если хочет, чтобы открыть ссылку в новой вкладке мыши, и только хотите его некоторые плитки на приборной панели:
onClick="javascript: window.open('http://url', '_blank');"
Так, например, в файле dashboard.erb
вы бы следующее:
Примечание:, что в этом примере у меня есть Switcher setup (необходимо установить dashing-contrib) и используется для переключения между 2-мя плитами, использующими различные виджеты (Hotness и список по умолчанию). Это будет работать на любой плитки. Это именно то место, где я использую его.
<% 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. В Гридстере есть Open issue for click events on iOS devices.
Благодаря Phylor над на GitHub для обеспечения временного исправления/решение, которое было подтверждено работая от 2/21/2016 (не мной).
Просто добавьте следующие строки в верхней части 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>
Это мой первый пост, так что я прошу прощения за ошибки форматирования, но понял, что пришло время, чтобы начать давать в сообщество, которое имеет помогли мне так много. Надеюсь это поможет!
Каков контекст, из которого запускается этот клик. Попробуйте добавить 'return false' в конце. И 'preventDefault', если в этом есть необходимость, тоже должно быть в конце. – zishe
У меня есть блок событий щелчка в моем виджет-метре, например, но добавление return false не помогает. класс Dashing.Meter расширяет Dashing.Widget @accessor 'значение', Dashing.AnimatedValue нажмите: (событие) -> location.href = "http://www.stackoverflow.com" возвращают ложные – sam