2016-02-26 14 views
0

Я столкнулся с проблемой с BHO в C#, Javascript не вставляет в iframe.IE Extention/Plugin/Addon javascript injection в iframe и документе C#

How to get access of <iframe> body using c++/ATL/COM? вопрос аналогичный, но в этом выше используется com. Я хочу использовать C#.

+0

Доступ к телу (по крайней мере, некоторые данные) в IFRAME с IE плагин Browser Helper Object (BHO) --- ----- Аналогичный вопрос в http://stackoverflow.com/questions/5119581/accessing-body-at-least-some-data-in-a-iframe-with-ie-plugin-browser-helper-ob –

+0

Тот же вопрос, заданный в: http://stackoverflow.com/questions/20965171/access-a-span-inside-iframe-using-mshtml –

ответ

0

Я создал расширение IE/Plugin/Addon Чтобы придать свой пользовательский JavaScript на странице, а также на IFrame атташе с документом

Так я создал BHO в C#. в Документе полной Событии

 private void webBrowser_DocumentComplete(object pDisp, ref object URL) 
    { 
     // this is main docuemnt 
     document = (HTMLDocument)webBrowser.Document; 

     //------------------------------------------------------------------------------------- 

     IHTMLElementCollection elcol = document.getElementsByTagName("iframe"); 
     foreach (IHTMLElement _htmlElement in elcol) 
     { 
      try 
      { 
       //This line is for specific iframe on body 
       //string fUrl = ((mshtml.HTMLIFrameClass)_htmlElement).IHTMLFrameBase_src; 
       //if (fUrl.Contains("/v1/api/login?isIframe=true")) 
       //{ 
       // in this casting HtmlElement HTMLFrameElement 
       HTMLFrameElement frmelement = (HTMLFrameElement)_htmlElement; 

       //from HTMLFrameElement Casting as a WebBrowser2 because it will give us body of i frame and works a document . 
       DispHTMLDocument doc2 = (DispHTMLDocument)((SHDocVw.IWebBrowser2)frmelement).Document; 

       //no Doc2 is documnt without access denied .. do what ever you want to do 

       //Here i am checking wheather document having body or not 
       if (doc2.body != null) 
       { 
        //Here i am checking Already injected or not if not then inject my javascript here 
        if (doc2.getElementById("UniqueDivVishal") == null) 
        { 
         IHTMLElement head = (IHTMLElement)((IHTMLElementCollection)doc2.all.tags("head")).item(null, 0); 
         IHTMLScriptElement scriptObject = (IHTMLScriptElement)doc2.createElement("script"); 
         scriptObject.type = @"text/javascript"; 
         scriptObject.text = Properties.Resources.SearchHelper1; 
         ((HTMLHeadElement)head).appendChild((IHTMLDOMNode)scriptObject); 

         string div2 = "<div id=\"UniqueDivVishal\"></div>"; 
         doc2.body.insertAdjacentHTML("beforeend", div2); 
        } 

        //execute a function from BHO which is in Iframe 
        doc2.parentWindow.execScript("funcation(){ InitFn(); alert('Hello From Frame')}", "javascript"); 

       } 
       //} 
      } 
      catch (Exception ex) 
      { 
       //Handle Exception here //     
      } 
     } 
    } 

для дальнейших деталей Вы можете связаться со мной: [email protected]