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


Автор: Burrr 9.5.2006, 03:21
Чтобы было понятно о чем речь, сразу приведу пример:
Код
<html>
<head>
    <title></title>
</head>
<body onload="initDesignMode()">
<script type="text/javascript">
function initDesignMode()
{
    var editHtml = "<b>2</b>";
        try {
            var streamCode = document.getElementById("frm").contentWindow.document;
            streamCode.designMode = 'On';
        } catch (e) {
            setTimeout("initDesignMode();", 50);
        }
}
</script>
<iframe width="300" height="200" id="frm" src="editorFrame.html"></iframe>
</body>
</html>

Код страницы в ифрейме:
Код
<html>
<head>
    <title></title>
    <script type="text/javascript" src="include/default.js"></script>
</head>
<body onclick="alert('eeee')">
</body></html>
 
При включенном свойстве designMode событие onclick в ИЕ и ФФ не срабатывает smile
Как это можно побороть? 
Конкретно нужно ловить события mouseUP и keyPress. 

Автор: ZAVS 10.5.2006, 00:10
а ты попробуй так

Код

<html>
<head>
    <title></title>
</head>
<body onload="initDesignMode()">
<script type="text/javascript">
function initDesignMode()
{
    var editHtml = "<b>2</b>";
        try {
            var streamCode = document.getElementById("frm").contentWindow.document;
            streamCode.designMode = 'On';
            streamCode.onclick=function(){
             alert('zz');
            };
        } catch (e) {
            setTimeout("initDesignMode();", 50);
        }
}
</script>
<iframe width="300" height="200" id="frm" src="editorFrame.html"></iframe>
</body>
</html>
  

Автор: Burrr 10.5.2006, 10:18
ZAVS, спасибо, но работает только в ИЕ smile.
Нельзя ли заставить работать события еще и в Гекко (например в Лисе)? 

Автор: S.A.P. 10.5.2006, 15:56
Burrr, 
Код

function initDesignMode()
{
    var editHtml = "<b>2</b>";
        try {
            var streamCode = document.getElementById("frm").contentWindow.document;
            streamCode.designMode = 'On';
        } catch (e) {
            setTimeout("initDesignMode();", 50);
        }
        
        (
            function ()
            {
                alert('eee');
            }
        ).attach('click', streamCode);
}


Function.prototype.attach = function(evnt)
{
    var object = arguments[1] || window;
    var self = this;
    
    if (object.addEventListener)
     object.addEventListener(evnt, this, false);
    else if (object.attachEvent)
        object.attachEvent("on" + evnt, this);
}
 

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