Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Событие в iframe с designMode='On'.


Автор: Burrr 5.6.2006, 13:01
Переходя ближе к делу вот код:
Код
<body onload=enableDisignMode()>
<iframe id=iframeId width=300 height=200></iframe>
<br>
<div style="font-size:11px;font-family:tahoma">Нажата клавиша: <b><span id=forShow></span><b></div>
<script>
d = document;
function gebi(id) {return d.getElementById(id)}
function enableDisignMode() {
    if (document.all) {//IE
        var frm = frames["iframeId"].document;
        frm.designMode = "On";
        frm.onkeypress = function () {alert(window.event.keyCode);}
    } else {//Gecko
        var frm = gebi("iframeId").contentDocument;
        frm.addEventListener("keydown", function(event) {gebi("forShow").innerHTML = event.keyCode;}, false);
        frm.designMode = "on";
    }
}
</script>
</body>

Под Гекко всё работает замечательно и на выходе я получаю код нажатой клавиши. А в ИЕ никак не могу добится того же, такое ощущение, что у объекта event просто отсутствуют св-ва. Подскажите где я ошибся!?
 smile  

Автор: S.A.P. 5.6.2006, 13:50
Попробуй для IE сделать так: 
Код

document.getElementById("iframeId").contentWindow.document.attachEvent('onkeypress', function () {alert(window.event.keyCode);})

 

Автор: Burrr 5.6.2006, 13:57
К сожалению не помогло smile 

Автор: Burrr 6.6.2006, 10:37
Неужели задача не имеет решения? 

Автор: GoodBoy 6.6.2006, 11:52
Burrr, лови ответ:

Код
<body onload=enableDisignMode()>
<iframe id=iframeId width=300 height=200></iframe>
<br>
<div style="font-size:11px;font-family:tahoma">Нажата клавиша: <b><span id=forShow></span><b></div>
<script>
d = document;
function gebi(id) {return d.getElementById(id)}
function enableDisignMode() {
    if (document.all) {//IE
        var frm = frames["iframeId"].document;
        frm.designMode="On";
        frm.onkeypress = function() {alert(iframeId.event.keyCode);}
    } else {//Gecko
        var frm = gebi("iframeId").contentDocument;
        frm.addEventListener("keydown", function(event) {gebi("forShow").innerHTML = event.keyCode;}, false);
        frm.designMode = "on";
    }
}
</script>
</body>
 

короче говоря, дело только в 1 слове. :-))
вместо window.event.keyCode надо - имя_ифрейма.event.keyCode 

Автор: Burrr 6.6.2006, 12:28
GoodBoy, спасисбо большое!
+1 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)