好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

跨域吧!webbrowser!

跨域吧!webbrowser!

跨域吧!webbrowser!

  在使用webbrowser的过程中,跨域是个头痛问题,从顶层到内层还能找到方法,从内层想要跨域到顶层在同域的情况下也很简单,如果不同域会提示:拒绝访问!应该是安全机制在作怪吧。问题总结如下图:

  以下内容均在不同域的前提下产生(同域的不用这么麻烦):

通过从顶层访问内层,我得到了inputIframe这个元素,如果想从inputIframe逐级向上推导,得到顶层(上一层)的Document,一般手段是行不通的,在网上找到一篇文章,不过没看懂:http://msdn.microsoft.com/en-us/library/ms537182(VS.85).aspx,不知道这几个接口怎么用,无奈之下,只有改变思维方式:既然能从顶层访问到内层,那么不一定需要从内层向上取Document,也可以从顶层向内层推导,如果取到的Document和内层的Documnet一样不就行了?

 function  TfrmSetTask.GetActiveElmPos(Doc: IHTMLDocument2;ELm:ihtmlelement): tpoint;
var
Element: IHTMLElement;
Frame: IHTMLFrameElement;
WB: IWebBrowser2;
HtmlDoc2: IHTMLDocument2;
begin
ELm.scrollIntoView( 0 );
(ELm as IHTMLElement3).setActive;

HtmlDoc2:=Doc;
Element := HtmlDoc2.activeElement;

Result:=Point( 0 , 0 );

while not ((Element.tagName=ELm.tagName) and (Element.sourceIndex=ELm.sourceIndex)) do
begin

Element := HtmlDoc2.activeElement;

Result.X:=Result.X+(Element as ihtmlelement2).getBoundingClientRect.left;
Result.y:=Result.y+(Element as ihtmlelement2).getBoundingClientRect.top;

if not Assigned(Element) then Break;
if Element.QueryInterface(IHTMLFrameElement, Frame) <> S_OK then Break;
if Frame.QueryInterface(IID_IWebBrowser2, WB) <> S_OK then Break;
if not Assigned(WB.Document) then Break;
if WB.Document.QueryInterface(IID_IHTMLDocument2, HtmlDoc2) <> S_OK then Break;

end ;
Result.X:=Result.X+(Elm as ihtmlelement2).getBoundingClientRect.left;
Result.y:=Result.y+(Elm as ihtmlelement2).getBoundingClientRect.top;
end ;

复制代码

在上面的函数中,需要传入一个顶层的Doc和一个已知的内层htmlElment,就可以计算出内层htmlElment相对于Webbrowser控件的位置(注意:不是相对于顶层document的位置),把这个函数改下,也可以得到想要的Document.

   总结下:本文有取巧之嫌,如果有更好的方法希望能回复一下,谢谢。

webbrowser

 

跨域吧!webbrowser!

摘要: webbrowser 跨域 阅读全文

posted @  2012-03-22 11:53  Bach 阅读(929) |  评论 (0)   编辑

 

js通过window.external调用delphi的返回值类型问题解决方案,不解的COM问题

posted @  2012-02-11 18:53  Bach 阅读(60) |  评论 (0)   编辑

 

跳过度娘的防御机制

posted @  2011-09-20 16:44  Bach 阅读(254) |  评论 (1)   编辑

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于跨域吧!webbrowser!的详细内容...

  阅读:50次