我一直在苦苦挣扎 - 我有一份基本上是这样的文件:
<html>
<head></head>
<body>
some divs and stuff
<div id="content">
<iframe src="" id="content_frame"></iframe>
</div>
</body>
</html>
这个特定页面的重要之处在于它知道页面上的任何内容何时具有焦点。这实际上非常简单,并且可以使用两个简单的函数:
window.onblur=function(){ // when you leave the window
if(conn != null) {
if (document.activeElement == document.getElementById("content_frame")) {
send_message_to_server(JSON.stringify({'type':'upd','ele':'vis','status':true}));
beep_off(conn.peer);
} else {
send_message_to_server(JSON.stringify({'type':'upd','ele':'vis','status':false}));
beep_on(conn.peer);
}
}
};
window.onfocus=function(){ // when you focus the window
if(conn != null) {
send_message_to_server(JSON.stringify({'type':'upd','ele':'vis','status':true}));
beep_off(conn.peer);
}
};
我遇到的问题是,当选择“iframe”时,它有焦点 - 这意味着当窗口模糊(更改标签或其他)时,iframe仍然在窗口内有焦点,因此会触发类似的消息仍然有焦点。
简而言之,我需要的是:
目前我所拥有的是:
我也尝试过:
答案 0 :(得分:0)
iframe
是完全不同的背景。您需要在iframe文档上设置事件处理程序,并使用iframe.postMessage
或window.top
等内容将这些事件代理回主窗口。如果您使用postMessage
,则需要在父窗口中侦听message
个事件并相应地解析这些事件,以确定在iframe
内触发的事件。