Поскольку это в среде usercript / extension, вам нужно расширить cleanUpCrappyEventHandling()
, чтобы учесть выпадающие списки. (Мой код для вашего другого вопроса не включал такой, потому что (1) я не использую эту функциональность и (2), стараясь не допустить усложнения примера, если нет известного спроса на него.
В любом случае замените cleanUpCrappyEventHandling()
на следующее, и раскрывающиеся списки также должны работать. :
function cleanUpCrappyEventHandling () {
//-- Fix base controls.
var nodesWithBadEvents = $(
"div.ui-datepicker td[onclick^='DP'], div.ui-datepicker a[onclick^='DP']"
);
nodesWithBadEvents.each ( function () {
fixNodeEvents ($(this), "click");
} );
//-- Fix month and year drop-downs.
nodesWithBadEvents = $(
"div.ui-datepicker select[onchange^='DP']"
);
nodesWithBadEvents.each ( function () {
fixNodeEvents ($(this), "change");
} );
}
function fixNodeEvents (jNode, eventType) {
var onName = "on" + eventType;
var fubarFunc = jNode.attr (onName);
/*--- fubarFunc will typically be like:
DP_jQuery_1325718069430.datepicker._selectDay('#pickMe',0,2012, this);return false;
*/
fubarFunc = fubarFunc.replace (/return\s+\w+;/i, "");
jNode.removeAttr (onName);
jNode.bind (eventType, function () {
eval (fubarFunc);
cleanUpCrappyEventHandling ();
} );
}
Обратите внимание, что среда usercript / extension заметно отличается от обычной JS с контекстом страницы. Вот почему другой ответ работает на обычной странице, но не в пользовательском сценарии. Пожалуйста, напишите и пометьте вопросы с учетом этого.