Problem with IE when I use frames[rte].document?

  • Thread starter Jan Ebbe Jensen
  • Start date
J

Jan Ebbe Jensen

Hi

I have tried the following code. It works in Mozilla. In IE I'm not able to
enable DesignMode? What have I done wrong? It says that obj is undefined?
Can anyone help me please.







<html>

<head>



<script type="text/javascript">



function initRTE (html, width, height) {

this.html = html;

this.width = width;

this.height = height;

}



initRTE.prototype.makeRTE = function() {

document.writeln('<iframe src="blank.htm" id="rte1" name="rte1" width="' +
this.width + 'px" height="' + this.height + 'px"></iframe>');

alert("getElementById: " + document.getElementById('rte1'));

this.enableDesignMode("rte1", this.html);

}



initRTE.prototype.enableDesignMode = function(rte, html) {



alert("enableDesignMode getElementById: " +
document.getElementById('rte1'));

var frameHtml = "<html>\n";

frameHtml += "<head>\n";

frameHtml += "</head>\n";

frameHtml += "<body>\n";

frameHtml += html + "\n";

frameHtml += "</body>\n";

frameHtml += "</html>";

if (document.all) {

var obj = frames[rte].document;

alert("obj " + obj);

obj.open();

obj.write(frameHtml);

obj.close();

obj.designMode = "on";

} else {

try {

document.getElementById(rte).contentDocument.designMode = "on";

try {

obj =
document.getElementById(rte).contentWindow.document;

obj.open();

obj.write(frameHtml);

obj.close();

} catch (e) {



}

} catch (e) {



}

}

}

</script>

</head>

<body>



<form name="form" action="" method="get">

<script language="JavaScript" type="text/javascript">



// initRTE (html, width, height)

var rte1 = new initRTE ("Just some text....", 560, 200);

rte1.makeRTE();



</script>

</form>

</body>

</html>



Thanks for any help!

Jan Ebbe Jensen
 
N

Nathan Sokalski

I just want to let you know that it is not a good idea to use frames. They
are deprecated, and also have some small security issues. They are also not
supported by all browsers and some older versions of certain browsers do not
always render them correctly. If you really need to combine multiple
documents, I would suggest using Server-Side Includes (the name may sound
scary, but they are really quite easy) and layout the page with tables. If
you are dynamically changing the content of a frame using Javascript and
don't want to learn a new complicated technology, I would suggest looking
into ASP (not ASP.NET, ASP.NET is much more complicated). But as useful as
frames may seem, they can be very dangerous, and are not usually worth using
a deprecated technology.
 
T

Thomas 'PointedEars' Lahn

Nathan said:
I just want to let you know that it is not a good idea to use frames.

Even though your intention is valid, your argumentation is badly flawed:
They are deprecated,

They have been deprecated by some W3C guys (without endorsement by all
members) since the time of XHTML 1.0. The same W3C guys recommend to
use client-side scripting instead of the `target' attribute, ignoring
that client-side scripting is not in the half of the cases available
that frame support is today. Not a good reason.
and also have some small security issues.

Not a good reason. There are much more security issues not related to
frames than related to them.
They are also not supported by all browsers

Not a good reason and not a problem, as those browsers (have to) provide
alternatives to access frame content. E.g. `lynx' as a text-only browser
does not support frames (even though `links' which also is a text-only
browser does), displays frame references as links.
and some older versions of certain browsers do not always render them
correctly.

At first you argue that they are deprecated (which applies for recent user
agents) and then you argue that older (!recent) user agents don't support
them properly. That's a contradiction. Furthermore, in that case those
older user agents are borken and do not require nor do they deserve support
from a reasonable Web author/programmer.
f you really need to combine multiple documents, I would suggest using
Server-Side Includes (the name may sound scary, but they are really quite
easy)

But that would increase server load and it would increase bandwidth usage
compared to a site built on frames.
and layout the page with tables.

Certainly not. Tables are for tabular data, not for layout:
A table is a table is a table. [psf 3.8] (Learn to) use CSS instead.
If you are dynamically changing the content of a frame using Javascript
and don't want to learn a new complicated technology, I would
suggest looking into ASP (not ASP.NET, ASP.NET is much more complicated).

That would be (Microsoft) JScript, not (Netscape) Java[sS]cript.
But as useful as frames may seem, they can be very dangerous, and are
not usually worth using a deprecated technology.

A good reason for using frames is usability. It makes a Web site less
usable to have all content reloaded if only a short portion of that
changes. Time is money.

A good reason for *not* using frames is usability. It is harder to
bookmark specific content on a Web site when it is built on frames.

But no such good reason for or against frames has been presented by you,
which makes me wonder whether you gave or your argumentation not enough
thought or just copy-pasted it without thought from someone/-where.


PointedEars
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top