Question

Opera and IFRAME

Asked by: Xer0

I am having a problem accessing the innerHTML of an IFRAME in opera. I have read bits and pieces saying that this property does not exist in Opera, but is there a workaround? The code I am working with is thus:

<div id='talkdest' class='item'></div>
<iframe id='talksrc' name='talksrc'></iframe>

function refresh() {
     frames['talksrc'].location.href = 'include/talksrc.php?random=' + Math.round(Math.random() * 10000);

      document.getElementById('talksrc').innerHTML = frames['talksrc'].innerHMTL;
      // The above line is what I am having problems with


     setTimeout("refresh()", 5000);
}

Ideally I need a cross-browser solution, but Opera is the most important to get working.

- Xavier
http://www.noreality.net

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2003-04-26 at 18:53:41ID20597487
Tags

iframe

,

opera

Topic

JavaScript

Participating Experts
7
Points
75
Comments
23

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. DIV over IFRAME in Opera 6+
    In IE and NS, I have a DIV(z-index=2) that has no problem displaying over an IFRAME(z-index=1). However, in Opera the IFRAME is always displaying over the DIV. I've tried containing the IFRAME in another DIV but still get the same undesired result. The IFRAME is a must s...
  2. DIV over IFRAME in Opera 6+
    In IE and NS, I have a DIV(z-index=2) that has no problem displaying over an IFRAME(z-index=1). However, in Opera the IFRAME is always displaying over the DIV. I've tried containing the IFRAME in another DIV but still get the same undesired result. The IFRAME is a must s...
  3. innerHTML of an IFRAME issues
    gosh, why can't everyone use IE? i have an iframe: <iframe id="myFrame" src="whatever.htm"></iframe> in the javascript if i run some test code and code:-------------------------------------------------------------------------------- alert...
  4. Mozilla/Opera iframe z-index problem
    I thought the z-index issue with mozilla/opera browsers had been sorted in the latest releases, but I still get a problem with Mozilla 1.3.1 and Opera 7.11. In the example below, the red div should overlap the iframe. It does on Mozilla, but not on Opera. Any fix for this? ...
  5. Opera, z-index, and iframes?
    In Opera I need to know how to keep an iframe under a div. The iframe is contained in it's own DIV with z-index: 5; the div that goes on top of everything (with a transparent PNG for Opera friendlyness) and it has a z-index: 10; I think. It's higher than 5 none-the-less and I...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: _adiosPosted on 2003-04-26 at 18:56:41ID: 8403312

 

by: Xer0Posted on 2003-04-27 at 00:06:13ID: 8403906

Thanks _adios, but I am already using Opera 7.
that line should be:
document.getElementById('talkdest').innerHTML = frames['talksrc'].innerHMTL;

Opera's website (http://www.opera.com/docs/specs/) claims it suppports innerHTML, however I get the following error:
Inline script thread
Error:
name: ReferenceError
message: Security error: attempted to read protected variable

 

by: lil_puffballPosted on 2003-04-27 at 05:44:13ID: 8404756

I see you have

document.getElementById('talksrc').innerHTML = frames['talksrc'].innerHMTL;

Why are you assigning the frame its own HTML?

 

by: JakobAPosted on 2003-04-27 at 07:35:00ID: 8405099

If the page in the ifram come frome a different server (or just a differently named one ('tripod.com' != 'www.tripod.com')) opera will not let you acces it.

 

by: mplungjanPosted on 2003-04-27 at 11:15:25ID: 8406158

Only IE with a file with extension .HTA and <iframe APPLICATION="yes"... would allow that code anyway
which probably should be

document.getElementById('talkdest').innerHTML = frames['talksrc'].innerHMTL;

 

by: _adiosPosted on 2003-04-27 at 13:35:57ID: 8406686

This goes (afaik) nowhere:

frames['talksrc'].innerHMTL

(I'll assume that's a typo). The frames[] collection contains window object (frames are essentially windows) - and window objects don't have innerHTML, as they're not HTMLElements. Try:

frames['talksrc'].document.documentElement.innerHTML

Don't have Opera here at the moment so....

 

by: mplungjanPosted on 2003-04-27 at 15:06:45ID: 8407795

duh... of course
But I guess you mean
frames['talksrc'].document.body.innerHTML

Michel

 

by: _adiosPosted on 2003-04-27 at 17:59:51ID: 8408837

Oops, didn't notice he was loading that into an element...

 

by: Xer0Posted on 2003-04-28 at 00:15:26ID: 8410908

I am loading the file using a relative path name, so wouldn't the browser realise that the page is in the same domain? I can access the 'document' in ie only, but nothing further.

Perhaps there is another way to approach the problem. Is there another way to load a file using javascript? Could I make a php file rather than displaying in the iframe, to dump to a file and then load that using js?

Or could I dump a .js file that will reload the div and then dynamically include that?

I'm going to go and try the latter method now, I'll post my findings here.

 

by: Xer0Posted on 2003-04-28 at 00:58:06ID: 8411092

I can't get either of those methods to work.

I'm trying a different approach:

function dhtmlLoadScript(url) {
     window.top.frames['talksrc'].location.href = 'include/talksrc.php?random=' + Math.round(Math.random() * 10000);

     var e = document.createElement("script");
  e.src = url;
  e.type="text/javascript";
  document.getElementsByTagName("head")[0].appendChild(e);

  setTimeout("dhtmlLoadScript('include/talk.js?random=' + Math.round(Math.random() * 10000))", 2000);
}


dhtmlLoadScript('include/talk.js?random=' + Math.round(Math.random() * 10000));

talk.js is rewritten by talksrc.php everytime it is called.
This method works in IE (yay!), but Opera raise a syntax error on the 'e.type = ...'. If I comment it out I get other syntax errors about e not existing. Does Opera not like createElement("script")?

I'm a little out of my depth here, but I think this method could work. I hope all that made sense :)

 

by: kasandraPosted on 2003-04-28 at 01:28:41ID: 8411232

Ok, silly question time :)

Why not just use:

function refresh() {
  talksrc.location.href = 'include/talksrc.php?random=' + Math.round(Math.random() * 10000);
}

?

All you want to do is replace the content of the iframe, right?

I assume you are calling that function within the HTML page that contains the iframe? Incidentally, how are you calling that function?

 

by: Xer0Posted on 2003-04-28 at 22:14:16ID: 8417444

Originally, I wanted to refresh the IFRAME (This works no problems), and then transfer the document inside the frame into a div ('talkdest').

Now, the reason I refresh the IFRAME is to make the server create a new .js file, which I can then dynamically include into the page. I realise that this is not very efficient, but I can optimize it later so that only new content is downloaded.

 

by: kasandraPosted on 2003-04-28 at 22:37:39ID: 8417516

Let's see if I am following what you are saying...

If you load talksrc.php, that in turn loads talk.js ... right?

So if you call

talksrc.location.href = 'include/talksrc.php?random=' + Math.round(Math.random() * 10000);

Should that not (re-)load the javascript file too? Does that happen, or are you are experiencing a problem with that?

Then, you want to read the contents of that iframe into a div...  it looks like if you join the various suggestions above together you should be using something like:

document.getElementById('talkdest').innerHTML = frames['talksrc'].document.body.innerHTML;


Is this correct?

 

 

by: Xer0Posted on 2003-04-29 at 04:02:00ID: 8418947

Opera does not like frames['talksrc'].document.body.innerHTML; (Protected variable)

I have got it working with the following code:

function dhtmlLoadScript(url) {
  window.top.frames['talksrc'].location.href = 'include/talksrc.php?random=' + Math.round(Math.random() * 10000);
  setTimeout("dhtmlLoadScript('include/talk.js?random=' + Math.round(Math.random() * 10000))", 3000);
}


dhtmlLoadScript('include/talk.js?random=' + Math.round(Math.random() * 10000));

And placing this in into the IFRAME inside script tags:
window.parent.document.getElementById('talkdest').innerHTML = "content";

Thankyou all so much for your help, is there a way I can give you all points? I'm new here, I don't know how the whole system works...

 

by: kasandraPosted on 2003-04-29 at 16:18:22ID: 8424246

Post a zero point question in Community Support with a link to this question, and explain how you would like to break up points  - they can take care of it for you. :)

 

by: moduloPosted on 2003-04-30 at 02:29:10ID: 8426537

Dear Xer0

I've refunded 50 points to enable you to accept the comment for one expert and to post two "Points for <expertname>" Q's for the other experts in this topic area.

Please:
1) Post the link to the original Q in the "Points for <expertname>" and
2) Add in the original Q a comment with the link to the "Points for <expertname>", thus the email notif will warn the expert.

modulo

Community Support Moderator
Experts Exchange

 

by: jaysolomonPosted on 2004-02-23 at 09:20:43ID: 10433680

No comment has been added lately, so it's time to clean up this TA.
I will leave the following recommendation for this question in the Cleanup topic area:

PAQ - no points refunded

Please leave any comments here within the next four days.
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!

jAy
EE Cleanup Volunteer

 

by: jaysolomonPosted on 2004-02-23 at 09:23:49ID: 10433708

Everyone deserved the points and since it was a 25 pointer i am unable to split so therefore i decided PAQ / No Refund

Sorry
jAy
EE Cleanup Volunteer

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...