JavaScript Dieses verflixte "designMode"!!!

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,

schaut Euch mal bitte folgenden Code an:

index.html
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="JavaScript">

sh = function( obj ) {

        var ni        = document.createElement('iframe');
        obj.disabled = true;
        ni.style.height        = obj.style.height;
        ni.style.width        = obj.style.width;
        ni.style.border = '1px solid gray';
        ni.frameBorder = 0; // remove IE internal iframe border
        ni.style.overflow = 'auto';
        ni.id                = "edit";
var e                = document.getElementById( document.getElementById(obj.id).parentNode.id);
obj.style.display = "none";
e.appendChild(ni);

                ni.src = 'iframe.php';

};



function init() {
        t = document.getElementsByTagName('textarea');
        for(var i=0,n=t.length;i<n;i++) {
                if(  t[i].className.match("sh") ) {
                        id = t[i].id;
                        t[i].id = id+'_sh';
                        eval(id+' = new sh(t[i])');
                }
        }

alert(document.getElementById('edit').contentWindow.document.designMode);
        document.getElementById('edit').contentWindow.document.designMode = "on";
}

function test() {
document.getElementById('edit').contentWindow.test('bla');
}

function html() {
innerhtml = document.getElementById('edit').contentWindow.document.body.innerHTML;
alert(innerhtml);
}


function set() {
        var html = prompt("Eingabe:","?");
        document.getElementById('edit').contentWindow.document.body.innerHTML = html;
}
</script>
</head>
<body id="body" onload="init();">

<input type="button" onclick="test()" />
<input type="button" onclick="html()" value="html()" />
<input type="button" onclick="set()" value="set()" />


<div id="container">
<textarea style="height: 500px;width: 1200px;" id="filed1" class="sh">
Hallo
</textarea>
</div>


</body>
</html>

iframe.php
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Highlight</title>
<script type="text/javascript">

function test( code ) {
        alert(code);
}

document.onclick = function () {
alert('!');
};
</script>
</head>
<body>
h

<!-- <input type="button" onclick="test()" /> -->
</body>
</html>

In der Datei index.html steht folgende Zeile:
HTML:
alert(document.getElementById('edit').contentWindow.document.designMode);
in der darauffolgenden Zeile wird "designMode" auf "on" gesetzt. Das klappt auch wunderbar, doch wenn ich die Zeile mit alert('...'); rausnehme, dann funktioniert das mit designMode nicht mehr ...

Hat jemand eine Idee, was da schiefläuft?

Wie kann ich (angenommen es würde laufen), ein Kontext-Menü im Iframe erstellen?

Vielen Dank vorab, :freaky:
CPU
 
Hier:
Code:
        ni.style.overflow = 'auto';
        ni.id                = "edit";
var e                = document.getElementById( document.getElementById(obj.id).parentNode.id);

Aber alle anderen Funktionen klappen ja .. :(
 
Zurück
Oben