c#. System.Windows.Forms.WebBrowser и код текста для IFrame

328
19 января 2018, 21:41

Использую стандартный System.Windows.Forms.WebBrowser для загрузки и отображения одной вебстраницы. WebBrowser эмулирует 11 версию IE. Страница имеет IFrame и отображается нормально.

Мне необходимо получить полный HTML код страницы с содержимым IFrame, но эти элементы пусты. В полноценном IE html-код можно видеть. Текст кода пробую получать следующими двумя способами:

public String HtmlDocumentText {
  get { return webBrowser.DocumentText; }
}
public String DomDocumentText {
  get {
  // REM. http://stackoverflow.com/questions/3640236/converting-htmldocument-domdocument-to-string
  var document = webBrowser.Document;
  var documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)document.DomDocument;
  var content = documentAsIHtmlDocument3.documentElement.outerHTML;
  return content;
  }
}

Мне кажется, что проблема заключается в ограничениях безопасности для этого элемента, потому как следующий код вызывает ошибку доступа:

var frames = webBrowser.DocumentTestToDelete.Window.Frames;
var frame1 = webBrowser.DocumentTestToDelete.Window.Frames[0];
var document1 = frame1.Document;

Ошибка: Access Denied (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

Замечу, что мне удалось получить код IFrames при помощи JavaScript:

string jCode = "var iframe = document.getElementById('frame-id'); var innerDoc = iframe.contentDocument || iframe.contentWindow.document; innerDoc.documentElement.innerHTML";
Object html = webBrowser.WebBrowser.Document.InvokeScript("eval", new object[] { jCode });

Но это не то что надо, хотя я мог бы такой подход использовать, но с большими трудозатратами. Может быть есть способ заставить WebControl отдавать полный html вместе с содержимым IFrame?

READ ALSO
Недоступны элементы для создания формы

Недоступны элементы для создания формы

Почему не могу использовать стандартные элементы в visual studio? Подскажите как решить данную проблему пожалуйста

196
как сделать натуральную сортировку в datagrid

как сделать натуральную сортировку в datagrid

VS2010 как сделать натуральную сортировку в datagrid согласно примеру в msdnСортировка работает, но цифры сортирует как символы

224
Свойство DialogResult у кнопки

Свойство DialogResult у кнопки

Проблема кажется детской, но я почему-то(тупой) не могу до конца разобратьсяНеобходимо на форме поставить у кнопок свойства DialogResult как "OK" и "Cancel"

215
Проблемы с EntityFramework+SQLite

Проблемы с EntityFramework+SQLite

Пытаюсь подружить EF6 и SQLite базу данныхСоздал модель и контекст данных

161