Как я инициировал контекстное меню браузера на элементе. (Как будто пользователь щелкнул правой кнопкой),

20 лет назад: Объектно-ориентированное программирование - Для лучше обработки сложности программного обеспечения.

Теперь: Облачные вычисления - Для лучше обработки аппаратной сложности.

будущее: что-то Описание, но потребуются еще 20 лет.

10
задан Doug Neiner 6 August 2009 в 21:09
поделиться

3 ответа

Извините за то, что принес печальные новости, но это невозможно сделать с помощью Javascript.

15
ответ дан 3 December 2019 в 20:43
поделиться

Я не хочу разочаровать вас, совсем наоборот, особенно потому, что вы ответили на мой вопрос :)

Я не думаю, что меню Contect браузера доступно через обычный скрипт на веб-странице.

Если то, что вы просите, был фактически выполнен, то производители браузера, возможно, рассмотрит эту ошибку и удалите это поведение. Кросс-браузер, это поведение очень вряд ли будет доступно сегодня.

Почему вы не захватите события мыши, и всякий раз, когда мышь непосредственно в области элемента ниже, который вы хотите показать контекстное меню для, подтолкнуть покрывающий элемент ниже, иначе назад на вершине?

Является ли одна вероятность, о которой я мог подумать, в основном раскрывая / разоблачить скрытый элемент в зависимости от положения мыши. Как резать отверстие в наложении.

Или почему бы вам не сделать текстовое поле прозрачным и полностью полностью поместите под накладку под текстовым полем?

Если это не работает технически, то, по крайней мере, у вас есть точка подачи ошибок или улучшений для целевых браузеры.

Кстати, это выглядит как контекстное меню, фактически работает, если пользователь щелчна щелчком правой кнопкой мыши непосредственно в позиции CARET, так что это может быть еще одна лазейка для рассмотрения.

2
ответ дан 3 December 2019 в 20:43
поделиться

У меня есть возможное решение, которое может удовлетворить ваши потребности . Он еще не идеален, я провел всего несколько быстрых тестов в нескольких браузерах (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 возникает странная проблема, когда вам нужно дважды щелкнуть мышью, прежде чем метка снова отобразится (я думаю, это связано с временем события). Вы можете легко понять, почему это происходит, посмотрев на код. Также заметил небольшой глюк иногда у лисы после вставки в поле, при размытии метка появлялась на долю секунды когда не должно. Это должно быть довольно просто исправить, если вы решите включить этот метод в свой код.

1
ответ дан 3 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: