Solved

Getting focus on an HTML iframe

Posted on 2002-06-17
17
1,248 Views
Last Modified: 2007-11-27
I am trying to gain focus of an iframe in a html document.

Using:
public AxSHDocVw.AxWebBrowser axWebBrowser1;

I can get the document fine and can view it in the broswer control or view the HTML in a textbox.

IHTMLDocument2 HTMLDocument =(IHTMLDocument2)WebBrowser1.Document;

However, I am trying to get focus on the data in the  HTML iframe and put the text in that iframe into a string.

Everything works but i cant get anything from the iframe. I seem to only get the text from the main html document.

Any help is appreciated.

0
Comment
Question by:aksteve
  • 8
  • 8
17 Comments
 
LVL 22

Expert Comment

by:CJ_S
ID: 7084156
The syntax would be:

WebBrowser.document.iframename.document.formname.fieldname.value
or
WebBrowser.document.iframename.document.formname.fieldname.focus()

0
 
LVL 5

Author Comment

by:aksteve
ID: 7084587
The iframe has no name="value"

It is just:


<iframe frameborder='0' width='300' height='150' scrolling='No' src='http://iframehere.com'></iframe>
0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7085811
You can set it's id can't you?

ANyway, you can also use the frames collection and the index.

WebBrowser.document.frames[0].document.formname.fieldname.focus()

0
 
LVL 5

Author Comment

by:aksteve
ID: 7086547
No, i can't set its ID actually.. If I could i definately would..

Basically i am trying to access to text inside a iframe that has no id.. I am not sure if this can be done with DOM or what.. I have yet to figure it out..

Exactly the reason i offer 200 points for this :)
0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7086655
Try the above. Instead of an id you use it's index.
0
 
LVL 5

Author Comment

by:aksteve
ID: 7086809
I think i tried it the way you suggested(and a few other ways) and got errors each time.

Error I got was:
Cannot apply indexing with [] to an expression of type 'mshtml.FramesCollection'

What i used was:

IHTMLDocument2 HTMLDocument = (IHTMLDocument2) axWebBrowser1.Document;
HTMLDocument.frames[0].document.focus();
0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7090904
You need to cast the collection first, just like you've done for the document.

object iIndex = 0;
mshtml.IHTMLWindow2 x = (mshtml.IHTMLWindow2) HTMLDocument.frames.item(ref iIndex);

(just checked). Now you can access the document of that innerframe again the same way as you've done for the first HTMLDocument.

Regards,
CJ
0
 
LVL 5

Author Comment

by:aksteve
ID: 7093104
I emailed a piece to you. Although this answer is 90% correct and i will creit you the 200 points.

I will give ya some bonus points if you can get it 100%
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 22

Expert Comment

by:CJ_S
ID: 7093108
Will check later tonight. Seen the email, had no time yet :-/
0
 
LVL 22

Accepted Solution

by:
CJ_S earned 400 total points
ID: 7093392
Was kinda easy. Same code, just one enhancement. This is the code I used to test.

               mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2) axWebBrowser1.Document;
               object iIndex = 0;
               mshtml.IHTMLWindow2 x = (mshtml.IHTMLWindow2) doc.frames.item(ref iIndex);
               doc = (mshtml.IHTMLDocument2) x.document;
               MessageBox.Show(doc.body.innerText);

CJ
0
 
LVL 5

Author Comment

by:aksteve
ID: 7093533
Hmm seems to work at the 1st url i gave you but it still doesnt at the 2nd url i sent you..
0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7093614
0
 
LVL 5

Author Comment

by:aksteve
ID: 7093629
There is text hehe.. Click on the iframe and use view source..

Actually if i can just get the source of it that would be fine also.. i cant seem to get anything from the 2nd url
0
 
LVL 5

Author Comment

by:aksteve
ID: 7093752
Well you got it and i thank you a bunch!!

0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7093763
But did you get it to work?

CJ
0
 
LVL 5

Author Comment

by:aksteve
ID: 7093780
Sure did :0
0
 

Expert Comment

by:DarrenSchwarz
ID: 14717583
For all you Emulators out there let me introduce myself Darren Schwarz...I have been doing extensive work re: webbrowser/application interface emulation and I know that the first time I came across "ntlm" authentication I thought my world had caved in on me...however after a few sleepless nights and some old school true programming I discovered the wonders of windows hooks...so...just thought I would put my hand up with humility  and say if I can help anyone with Win or Web emulation I would be glad to share the knowledge and hoipefully gain some too... thats it for now ..bye :)
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Bit flags and bit flag manipulation is perhaps one of the most underrated strategies in programming, likely because most programmers developing in high-level languages rely too much on the high-level features, and forget about the low-level ones. Th…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now