1

I try to use a webbrowser control in my application, in which I want to block scrips and frames. I used the extended web browser control in this answer to have access to download control flags. So, I used it as follows in the form constructor:

webBrowser1.DownloadControlFlags = (int)WebBrowserDownloadControlFlags.DLIMAGES
            + (int)WebBrowserDownloadControlFlags.NOFRAMES
            + (int)WebBrowserDownloadControlFlags.NO_SCRIPTS
            + (int)WebBrowserDownloadControlFlags.NO_FRAMEDOWNLOAD
            + (int)WebBrowserDownloadControlFlags.NO_JAVA
            + (int)WebBrowserDownloadControlFlags.NO_DLACTIVEXCTLS
            + (int)WebBrowserDownloadControlFlags.NO_BEHAVIORS
            + (int)WebBrowserDownloadControlFlags.NO_RUNACTIVEXCTLS
       +(int)WebBrowserDownloadControlFlags.SILENT;

It seems works, but I have a certain injected script which I want to run it. I injected it after the document was loaded (in DocumentCompleted event)

    IHTMLDocument2 doc2 = webBrowser1.Document.DomDocument as IHTMLDocument2;
    IHTMLScriptElement script = (IHTMLScriptElement)doc2.createElement("SCRIPT");
    script.type = "text/javascript";

    script.text = @"// Highlight Words Script ....";

    IHTMLElementCollection nodes = doc.getElementsByTagName("head");
    foreach (IHTMLElement elem in nodes)
    {
        //Append script
        HTMLHeadElement head = (HTMLHeadElement)elem;
        head.appendChild((IHTMLDOMNode)script);
    }

But it doesn't run as I call it

 wb.Document.InvokeScript("findString", new string[] { toWord });

How can I run my script while I have suppressed running the document scripts? Can I let scripts run but block script errors and undesired behaviours using other flags?

Community
  • 1
  • 1
Ahmad
  • 8,811
  • 11
  • 76
  • 141

0 Answers0