20 лет назад: Объектно-ориентированное программирование - Для лучше обработки сложности программного обеспечения.
Теперь: Облачные вычисления - Для лучше обработки аппаратной сложности.
будущее: что-то Описание, но потребуются еще 20 лет.
Извините за то, что принес печальные новости, но это невозможно сделать с помощью Javascript.
Я не хочу разочаровать вас, совсем наоборот, особенно потому, что вы ответили на мой вопрос :)
Я не думаю, что меню Contect браузера доступно через обычный скрипт на веб-странице.
Если то, что вы просите, был фактически выполнен, то производители браузера, возможно, рассмотрит эту ошибку и удалите это поведение. Кросс-браузер, это поведение очень вряд ли будет доступно сегодня.
Почему вы не захватите события мыши, и всякий раз, когда мышь непосредственно в области элемента ниже, который вы хотите показать контекстное меню для, подтолкнуть покрывающий элемент ниже, иначе назад на вершине?
Является ли одна вероятность, о которой я мог подумать, в основном раскрывая / разоблачить скрытый элемент в зависимости от положения мыши. Как резать отверстие в наложении.
Или почему бы вам не сделать текстовое поле прозрачным и полностью полностью поместите под накладку под текстовым полем?
Если это не работает технически, то, по крайней мере, у вас есть точка подачи ошибок или улучшений для целевых браузеры.
Кстати, это выглядит как контекстное меню, фактически работает, если пользователь щелчна щелчком правой кнопкой мыши непосредственно в позиции CARET, так что это может быть еще одна лазейка для рассмотрения.
У меня есть возможное решение, которое может удовлетворить ваши потребности . Он еще не идеален, я провел всего несколько быстрых тестов в нескольких браузерах (Fox 3.6, IE7, IE8, Chrome 4, Safari 3 на xp). Его нужно будет настроить и улучшить, но это только начало. По сути, идея состоит в том, чтобы удалить метку при щелчке правой кнопкой мыши, чтобы нужное поле попадало в событие mouseup и, следовательно, запускало контекстное меню в соответствующем поле.
// Remove the contextmenu from "In-Field" Labels
base.$label.bind("contextmenu",function(e){
return false;
});
// Detect right click on "In-Field" label:
// hide label on mousedown so mouseup will target the field underneath.
base.$label.mousedown(function(e){
if ( e.which == 3 ){
var elLbl = $(this);
elLbl.hide();
var elFid = $(this).attr("for");
// bind blur event to replace the label when we are done.
$("#" + elFid ).bind("blur.infieldlabel",function(){
elLbl.show();
$("#" + elFid ).unbind("blur.infieldlabel");
});
return false;
}
});
В браузерах IE и Safari возникает странная проблема, когда вам нужно дважды щелкнуть мышью, прежде чем метка снова отобразится (я думаю, это связано с временем события). Вы можете легко понять, почему это происходит, посмотрев на код. Также заметил небольшой глюк иногда у лисы после вставки в поле, при размытии метка появлялась на долю секунды когда не должно. Это должно быть довольно просто исправить, если вы решите включить этот метод в свой код.