我想監聽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();
});
}