Узел WebKit: вырезать / копировать / вставить правой кнопкой мыши контекстное меню и iframe

Есть ли справочная реализация о том, как это сделать?

У всего приложения есть iframe со сторонним контентом, который я не могу изменить. Мне удалось установить контекстное меню в пустом приложении, но оно не появляется, когда iframe занимает все окно.

(Я использую $(document).on("contextmenu", ..)

Как я могу заставить его работать и в iframe?

2 ответа

Решение

Это в ответ на скрипт tinyproxy...

Событие onload отлично подходит для сообщения TITLE и URL iframe во время навигации пользователя, но я бы не использовал его для кликов, потому что каждый раз, когда пользователь перемещается куда-то (используя левый клик), ваш скрипт будет добавлять нового слушателя, потому что событие onload сработает при загрузке фрейма с новым контентом!

Более правильный способ прослушивания щелчка правой кнопкой мыши - это…

FrameID.addEventListener('contextmenu',function(){Whatever();});

Вы должны добавить слушателя в окно содержимого iframe. Вот пример кода, я думаю, что он должен соответствовать вашим потребностям.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf8">
    <title></title>
    <style type="text/css">
        #gframe{
            width: 100%;
            height: 100%;
            left: 0px;
            top: 0px;
            position: absolute;
        }
    </style>
    <script type="text/javascript">
        var appendContextmenuListener = function(){
            var gframe = document.getElementById('gframe');
            var subWindow = gframe.contentWindow;
            var subDocument = subWindow.document;
            subDocument.oncontextmenu = function(){
                console.log(1);
            }
        };
    </script>
</head>
<body>
    <iframe id="gframe" src="https://www.google.com.hk" 
        onload="appendContextmenuListener()"></iframe>
</body>
</html>
Другие вопросы по тегам