Javascript: событие в iFrame - PullRequest
       5

Javascript: событие в iFrame

2 голосов
/ 06 февраля 2011

Я создаю WYISWYG редактор с iframe с designMode = 'on'.

Проблема в том, что я не могу использовать никакое событие в iframe в Firefox и Opera (IE не проверено)Например, я хотел бы отследить событие onkeyup:

document.getElementById("myFrame").onkeyup = function(){
    doSomething...
}

, но не работает в родительском окне.

Я тоже пытался в iframe с этим:

top.frames[0].onkeyup = function(){
        doSomething...
}

и все подобные вещи:

top.document.frames[0].onkeyup
top.frames["myFrame"].onkeyup
top.frames[0].document.onkeyup

Но никто из них не хочет работать, так что в итоге оказалось, что даже window.onclick не работает, так что теперь янемного сбит с толку ...

Какое решение для этого?

РЕДАКТИРОВАТЬ

Кажется, проблема в document.designMode = "on" в iframe

1 Ответ

8 голосов
/ 06 февраля 2011

Я бы предложил перехватить событие в iframe на Document, а в Firefox по крайней мере вам нужно сделать это, используя addEventListener() вместо onkeyup.Следующее будет работать во всех основных браузерах:

var iframe = document.getElementById("myFrame");
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;

function handleIframeKeyUp(evt) {
    alert("Key up!");
}

if (typeof iframeDoc.addEventListener != "undefined") {
    iframeDoc.addEventListener("keyup", handleIframeKeyUp, false);
} else if (typeof iframeDoc.attachEvent != "undefined") {
    iframeDoc.attachEvent("onkeyup", handleIframeKeyUp);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...