V. Ответов: 0

Управление WPF webbrowser и iframe [решено]


Я могу встроить этот url-адрес http://www.staff.oma.be/StaffBox.jsp[^] на веб-странице через iframe. С правильным сообщением через форму я могу управлять этой веб-страницей (например, другое временное окно для графика, другой график и т. д.).

Это работает в обычном браузере, но когда я хочу использовать элемент управления WebBrowser в WPF, он начинает выбрасывать ошибки javascript повсюду, и фрейм остается пустым (визуальным), но источник представления показывает код правильно. Похоже на проблему безопасности, но не могу найти, где это исправить.

* поиск в google с несколькими ключевыми словами/предложениями
* добавлено <!-- сохранено из url=(0014)about:internet -->\n\r, но никакого прогресса.
* скопировал исходный код iframe из элемента управления WebBrowser, сохранил его в виде html и открыл в браузере = & gt; works.


Надеюсь, у кого-нибудь есть идея.
спасибо.

(Visual Studio 2012, .Net 4.5)




[РЕШЕНИЕ]
* Установлен .Net 4.5.2
* Установлен CefSharp.В WPF с помощью NuGet
* Использовал этот элемент управления вместо элемента управления WebBrowser в XAML
* добавлены следующие строки в коде
cwb_staffboxes.GetBrowser().MainFrame.LoadStringForUrl(html.ToString(), "http://www.localstaff.be");
cwb_staffboxes.WebBrowser.Load("http://www.localstaff.be");


Примечание: http://www.localstaff.be это фиктивный url-адрес.
[/РЕШЕНИЕ]

Что я уже пробовал:

код XAML
&ЛТ;WebBrowser элемент имя="wb_staffboxes" поле HorizontalAlignment="стрейч" имеет="растянуть" /&ГТ;

С фоновым кодом:
wb_staffboxes.Navigatetostring, в(формат HTML.Метод toString());

HTML.ToString () дает:
Это работает в обычном браузере, но не в WebControl WPF.
<html><body><iframe id='sb_sw' name='sb_sw' width='700' height='500'></iframe>
<div style="visibility:hidden">
<form id="sendpost" method="post" action="http://www.staff.oma.be/StaffBox.jsp">
<input type="text" id="txtbox_dtsstart" name="txtbox_dtsstart" value="20150318000000" />
<input type="text" id="txtbox_dtsend" name="txtbox_dtsend"  value="20150319000000" />
<input type="text" id="txtbox_plottypes" name="txtbox_plottypes"  value="acespeed|ql;" />
<input type="text" id="txtbox_ticksize" name="txtbox_ticksize" value="2" />
<input type="text" id="txtbox_connectdots" name="txtbox_connectdots" value="true" />
<input type="text" id="txtbox_size" name="txtbox_size" value="640;480" />
</form></div><script>document.getElementById("sendpost").target="sb_sw";
document.getElementById("sendpost").submit();</script>
</body></html>

jimmson

Привет, вы должны использовать встроенный WPF WebBrowser или нет?

V.

Да:
&ЛТ;WebBrowser элемент имя="wb_staffboxes" поле HorizontalAlignment="стрейч" имеет="растянуть" /&ГТ;

Извините, если это было неясно

jimmson

Жаль это слышать! Встроенный браузер WPF довольно сломан (на мой взгляд), но есть бесплатные альтернативы, которые вы могли бы использовать вместо него.

jimmson

Ну, на самом деле CefSharp-это то, что я хотел вам порекомендовать, пока вы не написали, что вам нужен классический встроенный веб-браузер. :) Приятно слышать,что вы решили эту проблему.

Richard Deeming

Как вы уже выяснили, WebBrowser по умолчанию управление заблокировано в режиме IE7. Вы можете переопределить его, отредактировав реестр, но вы должны сделать это на каждый машина, на которой работает ваше приложение.

Управление веб-браузером и указание версии IE | Rick Strahl[^]

CefSharp-гораздо лучшее решение. :)

0 Ответов