PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JavaScript Dieses verflixte "designMode"!!!



CPU
23.08.2008, 14:00
Hallo,

schaut Euch mal bitte folgenden Code an:

index.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


<!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:


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, :freak2
CPU

claW.
23.08.2008, 14:22
wo hast du denn eine id mit namen edit vergeben?

CPU
23.08.2008, 15:43
Hier:


ni.style.overflow = 'auto';
ni.id = "edit";
var e = document.getElementById( document.getElementById(obj.id).parentNode.id);


Aber alle anderen Funktionen klappen ja .. :(