我想监听iframe中的keydown事件以停止执行退格。 只要iframe中的页面来自同一个域,但是当它来自另一个域时,它会在内容()方法被调用时失败。在跨域的iframe中监听keydown事件
的错误是:
IE: “0X80070005 - JavaScript的运行时错误:访问被拒绝。”
铬:“未捕获的SecurityError:未能读取从‘HTMLIFrameElement’的‘contentDocument’属性:被阻止与原点的帧‘DOMAIN_A’从访问与原点的帧‘DOMAIN_B’协议,域和端口必须比赛。”
有没有什么方法可以监听来自其他域的iframe上的keydown事件?
我用这个angularJS代码设置一个监听器:
KeyDownService.preFilterKeyDown($(this).contents());
...
angular.module('portal.services.keyHandlers.keyDownService', [])
.service('KeyDownService', function() {
//Prevents shortcut keys (for instance backspace) in being executed in an iframe or document.
this.preFilterKeyDown = function ($document) {
$document.keydown(function (e) {
var preventKeyPress;
switch (e.keyCode) {
case 8: //Backspace
preventKeyPress = preventBackspace(e);
break;
...
default:
preventKeyPress = false;
}
if (preventKeyPress)
e.preventDefault();
});
}