Quantcast
Channel: Internet Explorer Web Development forum
Viewing all articles
Browse latest Browse all 3527

Inline script with included script in iframe freezes IE 7 & 8

$
0
0
I have a particular set of pages which is feezing both newer IE browsers and 
their debuggers (and probably the older as well).  No error messages: an 
outright freeze.

Basically, there's a parent .asp page with an iframe.  The iframe's content 
is generated by a call to a javascript function from the parent and written 
by document.writes.  The iframe's content is written at page load, and 
rewritten everytime a selection is made in the parent page, which recalls the 
function and rewrites the iframe's content using changed variables which both 
share. 

the iframe's dynamically rendered document contains both inline script (of 
the form <script type='text/javascript>function foo() {}</script>) and 
included javascript files (of the form <script src=something.js 
type='text/javascript'></script>).

evidently this is what freezes the IE browsers. If the iframe content 
contains both inline and outside javascript files, the browser freezes in the 
middle of loading the parent page (which, you remember, also produces the 
iframe content initially).  There is no problem with other browsers' 
accessing the same content.

Is there something simple I'm missing?  

I have a complete test case: the parent page containing the iframe, the 
script which puts minimal content into the iframe, and a dummy outside 
javascript file to be referenced in the iframe content.  This is the problem 
reduced to its simplest terms, if you want to put it on the server, here it 
is:

//this is "Something.asp", the parent page.  notice that it is written on 
the server, but, or course, appears to the browser as html.  It sets up an 
iframe.  then it calls a function (writesomething() in an outside file: 
something.js, which provides markup to the iframe...
 
<%@ LANGUAGE = "JavaScript" %><% 
Response.Write("<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN' 
'http://www.w3.org/TR/html4/strict.dtd'>\r");
Response.Write("<html lang='en'>\r");
Response.Write("<head>\r");
Response.Write("<meta http-equiv='content-type' content='text/html; 
charset=UTF-8' />\r");
Response.Write("<meta name='description' content=' ' />\r");
Response.Write("<meta name='keywords' content=' ' />\r");
Response.Write("<meta name='Author' content='DA Ward - 
daward@worldnet.att.net' />\r");
Response.Write("<meta name='copyright' content='© 2009 DA Ward, Associates' 
/>\r");
Response.Write("<title>IE 8 Flaw master page</title>\r");
Response.Write("<style type='text/css'>\r\r");
Response.Write("<style type='text/css'>\r\r");
Response.Write("body {color:black; font-size:24px; text-align:center; 
width:980px; height:600px;}\r\r");
Response.Write("</style>\r\r");
Response.Write("<Script type='text/javascript' 
src='something.js'></Script>\r\r");
Response.Write("<body>\r");
Response.Write("<div style='float:left; width:980px;'>\r");
Response.Write("<div style='float:left; width:260px; padding:40px 20px;'>\r");
Response.Write("This is the server page, which sets markup and calls 
something.js.<br><br>Something.js writes its own markup into the iframe on 
the right.<br><br>As it's coded now, the page loads.<br><br>To freeze the 
browser, uncomment the lines at the end of something.js.<br><br>If you play 
around, you'll see that IE browsers accept (in something.js) an imported .js 
file or a native function, but not both (without freezing).<br><br>This 
behaviour has totally scuttled the site I'm working on...\r");
Response.Write("</div>\r\r");
Response.Write("<div style='float:left; width:680px;'>\r");
Response.Write("<iframe name='somethingholder' id='somethingholder' 
style='width:600px; height:350px; padding:40px;' src='dummy.htm' 
allowtransparency='true'></iframe>\r\r");
Response.Write("</div>\r\r");
Response.Write("</div>\r\r");
Response.Write("</body>\r");
Response.Write("</html>\r\r");
Response.Write("<SCRIPT type='text/javascript'>\r");
Response.Write("writesomething()\r");
Response.Write("</SCRIPT>\r");
%>
//this is the function that writes to the iframe: call it "something.js".  
Save it in the same folder as the rest.
 
function writesomething () 
{
var odoc = frames['somethingholder'].document;
odoc.write("<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN' 
'http://www.w3.org/TR/html4/strict.dtd'>\r");
odoc.write("<html lang='en'>\r");
odoc.write("<head>\r");
odoc.write("<meta http-equiv='content-type' content='text/html; 
charset=UTF-8' />\r");
odoc.write("<meta name='description' content=' ' />\r");
odoc.write("<meta name='keywords' content=' ' />\r");
odoc.write("<meta name='Author' content='DA Ward - daward@worldnet.att.net' 
/>\r");
odoc.write("<meta name='copyright' content='© 2009 DA Ward, Associates' 
/>\r");
odoc.write("<title>IE 8 Flaw iframe written by Jscript</title>\r");
odoc.write("<style type='text/css'>\r\r");
odoc.write("h1 {color:red; font-size:30px;}\r\r");
odoc.write("</style>\r\r");
odoc.write("<body>\r");
odoc.write("<h1>Something.js writes the content of this iFrame.  Examine 
it's code.<br><br>Uncomment lines to freeze IE 8 and 7.<br><br>Works fine in 
Firefox, Chrome, and Safari...</h1>\r");
odoc.write("</body>\r</html>\r\r");
odoc.write("<script src='importedsomething.js' 
type='text/javascript'></script>\r\r");
//odoc.write("<script type='text/javascript'>\r\r");
//odoc.write("function inlinesomething () {var xxxmmm = 'foo'};\r\r");
//odoc.write("</script>");
odoc.close();
// this is any old outside javascript file: call it "importedsomething.js" 
and put it in the same folder as all the others.   It is the script 
referenced in the iframe.
 
function importedsomething () 
{
var somethingelse = "see, I told you...!"
}

//this is dummy.htm . It is the temporary content of the iFrame until 
something.js refills it.
 
<HTML><BODY STYLE='background-color:#FFEEFF;'><CENTER>please wait a moment....</CENTER></BODY></HTML>

Viewing all articles
Browse latest Browse all 3527

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>