Обновление iFrame в элементе управления веб-браузера
C# Visual Studio 2010
У меня есть сложная веб-страница, которая содержит несколько фреймов, которые я загружаю в элемент управления веб-браузера. Я пытаюсь найти способ обновить один из фреймов, когда пользователь нажимает кнопку в форме окна.
Я не могу найти что-то конкретное для обновления одного фрейма. Есть идеи?
2 ответа
Из DOM вы можете просто вызвать:
document.getElementById([FrameID]).contentDocument.location.reload(true);
Используя элемент управления WebBrowser, вы можете выполнить javascript самостоятельно, используя метод InvokeScript в Document:
browser.Document.InvokeScript([FunctionName], [Parameters]);
Соедините эти две концепции, написав свою собственную функцию на родительской странице:
function reloadFrame(frameId) {
document.getElementById(frameId).contentDocument.location.reload(true);
}
И вызвать это в вашем коде C#:
browser.Document.InvokeScript("reloadFrame", new[] { "myFrameId" });
Как насчет использования MSHTML и метода перезагрузки интерфейса IHTMLLocation. Вы бы добавили ссылку на Microsoft.mshtml и попробуйте:
IHTMLDocument2 doc = webBrowser1.Document.Window.Frames["MyIFrame"].Document.DomDocument as IHTMLDocument2;
IHTMLLocation location = doc.location as IHTMLLocation;
if (location != null)
location.reload(true);
Значение true
перезагружает страницу с сервера, пока false
извлекает его из кеша