是否有关于如何执行此操作的参考实现?
整个应用都有一个iframe,其中包含我无法修改的第三方内容。我能够在空白的应用程序中设置上下文菜单,但是当iframe占据整个窗口时它不会出现。
(我使用$(document).on(“contextmenu”,..)
我怎样才能让它在iframe中运行?
答案 0 :(得分:2)
您应该将监听器附加到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>
答案 1 :(得分:0)
这是对tinyproxy的脚本的回应......
onload事件非常适合在用户导航时报告iframe的TITLE和URL,但我不会将其用于点击,因为每次用户导航到某处(使用左键单击),您的脚本都会附加一个新的监听器,因为onload事件将在框架加载新内容时触发!
侦听右键单击的更正确方法是......
FrameID.addEventListener('contextmenu',function(){Whatever();});