Узел 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>