Это зависит от того, как события присоединяются. Поскольку иллюстрация предполагает, что у нас есть следующий обработчик щелчков:
var handler = function() { alert('clicked!') };
Мы собираемся присоединить его к нашему элементу с помощью различных методов, некоторые, которые позволяют контроль и некоторых, которые не делают.
Метод A) единственный обработчик событий
element.onclick = handler;
// inspect
alert(element.onclick); // alerts "function() { alert('clicked!') }"
Метод B) несколько обработчиков событий
if(element.addEventListener) { // DOM standard
element.addEventListener('click', handler, false)
} else if(element.attachEvent) { // IE
element.attachEvent('onclick', handler)
}
// cannot inspect element to find handlers
Метод C): jQuery
$(element).click(handler);
1.3.x
// inspect
var clickEvents = $(element).data("events").click;
jQuery.each(clickEvents, function(key, value) {
alert(value) // alerts "function() { alert('clicked!') }"
})
1.4.x (хранит обработчик в объекте)
// inspect
var clickEvents = $(element).data("events").click;
jQuery.each(clickEvents, function(key, handlerObj) {
alert(handlerObj.handler) // alerts "function() { alert('clicked!') }"
// also available: handlerObj.type, handlerObj.namespace
})
(См. jQuery.fn.data
и jQuery.data
) глоток>
Метод D): Прототип (грязный)
$(element).observe('click', handler);
1.5.x
// inspect
Event.observers.each(function(item) {
if(item[0] == element) {
alert(item[2]) // alerts "function() { alert('clicked!') }"
}
})
1.6 к 1.6.0.3, включительно (стал очень трудным здесь)
// inspect. "_eventId" is for < 1.6.0.3 while
// "_prototypeEventID" was introduced in 1.6.0.3
var clickEvents = Event.cache[element._eventId || (element._prototypeEventID || [])[0]].click;
clickEvents.each(function(wrapper){
alert(wrapper.handler) // alerts "function() { alert('clicked!') }"
})
1.6.1 (немного лучше)
// inspect
var clickEvents = element.getStorage().get('prototype_event_registry').get('click');
clickEvents.each(function(wrapper){
alert(wrapper.handler) // alerts "function() { alert('clicked!') }"
})
, Что Вы описываете соответствия приятно в возможности внешнего плагина под названием RBPitch.
От описание панели запуска:
rbpitch является плагином для Rhythmbox, который позволяет Вам изменить подачу, темп и скорость в режиме реального времени при игре песни. Основные функции rbpitch включают:
*Change подача и темп Вашей музыки друг независимо от друга.
*Change "скорость", которая является pitch+tempo, масштабируемым вместе без искажения.
для установки - для RB2.96 & RB 2.97
sudo apt-add-repository ppa:smcnam/rbpitch-release
sudo apt-get update
sudo apt-get install rbpitch
В Rhythmbox, перейдите к менеджеру Plugins с помощью меню Edit-> Plugins. Удостоверьтесь флажок рядом с "Подачей и Смещением Темпа" проверяется.
RB2.98 и вне [1 116]
не был никакими изменениями кода начиная с выпуска RB2.97 - таким образом, этот плагин только применим для Ubuntu 12.04 & 12.10.
Значительные изменения в структуре меню Rhythmbox и т.д. были внесены начиная с RB 2.99 - поэтому, пока может быть возможно переключить Ваши источники назад на 12,10, чтобы заставить его работать на RB2.98/RB2.99 и RB3.0, я сомневаюсь. Вероятно, лучше для броска проблемы на система отслеживания ошибок OP для наблюдения будущих планов.