【发布时间】:2017-07-19 13:27:30
【问题描述】:
我正面临一个问题,这个问题已经被问过了,但并不完全像我要做的那样(或者我还没有找到),即知道何时有人点击了我无法控制的跨域 iframe。
我已经看到有一些技巧可以得到它:我这样做了,它可以在 FF、IE 11 和 Chrome 上运行,监听一个 focusout() 事件;无论如何,它仅在有人第一次点击 iframe 时才有效。
现在,要知道用户是否再次单击,当此事件发生时,我已尝试将焦点重新放在文档正文中的元素上,但这不起作用。
这是代码我写过:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Focus() test</title>
<!-- JQuery libraries -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<input type="text" id="myInput" value=""> <br />
<div id="iframeContainer" style="height: 400px; width: 280px">
<iframe id="theIframe" height="400px" width="280px" src="https://docs.google.com/viewer?srcid=0B3R3uQMMhRrxUFJyYllhd0hVSkk&pid=explorer&efh=false&a=v&chrome=false&embedded=true"> </iframe>
</div>
<script>
var clickNum = 0;
$(document).ready(function(){
$("#myInput").focus();
$("body").focusout(function() {
clickNum++;
alert("click num:" + clickNum);
$("#myInput").focus();
});
});
</script>
</body>
</html>
我也尝试替换 jQuery 代码的最后一行,即
$("#myInput").focus();
有几个实例:
$(this).next().focus();
正在尝试模拟 Tab 键。
事实上,当有人点击 iframe(在我的代码中的 Google Drive 预览的缩放控件之一上)时,焦点会被主体丢失并触发警报,但是我无法取回例如,专注于输入字段。
但是,如果有人按 Tab 键一定次数(这取决于之前单击的缩放控件和顺序),焦点将重新回到输入字段上,或者显然,如果有人在其中单击,则直接返回。
然后,如果有人再次单击某个缩放控件,则会再次触发警报,您可以跟踪单击次数。
所以我的最后一个问题是:
一旦焦点转移到跨域 iframe 上,或者当您无法将跨域中的两个文档控制为在我的情况下,你没有任何希望找回它?
我知道这些事情可能已经被问过了,但我只是找到了整个问题的一部分,并不总是具有完全相同的上下文。
提前谢谢你,
费德里科
【问题讨论】:
标签: jquery iframe click focus cross-domain