WebBrowser и доступ к его загруженному документу
От: pv_s  
Дата: 13.03.07 10:40
Оценка:
Использую Microsoft WebBrowser на странице HTML

Для вставки кода использую
<OBJECT ID="WebBrowser1" WIDTH=300 HEIGHT=151
 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
    <PARAM NAME="ExtentX" VALUE="7938">    <PARAM NAME="ExtentY" VALUE="3969">
    <PARAM NAME="ViewMode" VALUE="0">      <PARAM NAME="Offline" VALUE="0">
    <PARAM NAME="Silent" VALUE="0">        <PARAM NAME="RegisterAsBrowser" VALUE="0">
    <PARAM NAME="RegisterAsDropTarget" VALUE="1">
    <PARAM NAME="AutoArrange" VALUE="0">   <PARAM NAME="NoClientEdge" VALUE="0">
    <PARAM NAME="AlignLeft" VALUE="0">     <PARAM NAME="NoWebView" VALUE="0">
    <PARAM NAME="HideFileNames" VALUE="0"> <PARAM NAME="SingleClick" VALUE="0">
    <PARAM NAME="SingleSelection" VALUE="0">
    <PARAM NAME="NoFolders" VALUE="0">     <PARAM NAME="Transparent" VALUE="0">
    <PARAM NAME="ViewID" VALUE="{0057D0E0-3573-11CF-AE69-08002B2E1262}">
    <PARAM NAME="Location" VALUE="about:blank">
</OBJECT>
<script>
function GoToUrl(url)
{
   var obj = getElementById("WebBrowser1")
   obj.Navigate2(url)
}
</script>



Надо
1. Из JavaScript на родительской странице переадресовать объект WebBrowser1 на другой сайт. Проблема : IE6 запрещает обращаться к объекту document.getElementById("WebBrowser1") с сообщениев "Разрешение отклонено". Где и как дать разрешение? Узел, на котором страница расположена находится в Trusted Zone с опциями "включено всё".
1.1. Научился" перегружать саму страницу c новым параметром — адресом того, куда надо перейти. Код для вставки OBJECT генерирую с помощью команды document.write


2. Надо получить доступ к объектной модели страницы, загруженной в этот контрол, чтобы "повесить" туда глобальное событие "onfocus" и иметь доступ ко всем полям форм для заполнения их. По причине 1) этого сделать не могу. Думаю, если разрешение дать не удастся, надо будет делать свой ActiveX контрол. Что-нибудь подскажете на этот счёт?


3. Я нашёл переработку WebBrowser в статье http://www.rsdn.ru/article/files/dotnet/WebBrowser.xml
Автор(ы): Олег Михайлик
Дата: 19.12.2003
Для работы с ActiveX-контролами в .NET Framework есть стандартный подход. Средствами .NET SDK или Visual Studio генерируем сборку, в которой будет создана обёртка для ActiveX-контрола, представляющая его в виде .NET контрола.
Так можно сгенерировать обёртку и для контрола Microsoft Internet Explorer Web Browser. И использовать функциональность браузера веб-страниц в своих программах.
Это всё хорошо, но не всегда автоматические конвертеры могут правильно сделать свою работу. Если хочешь, чтобы что-то было сделано как следует, сделай это сам. Я сделал обёртку над WebBrowser средствами только языка C#. Теперь, если вы хотите что-то передалать на свой лад, можно брать эти исходники, а не проделывать весь путь самостоятельно.
, но не могу вставить этот ActiveX на страницу HTML. По крайней мере не видно этой компоненты среди тех, которые можно вставить в HTML с помощью, например, Microsoft ActiveX Pad или tstcon32.exe. Небольшая модификация компоненты согласно http://www.codeproject.com/cs/miscctrl/exposingdotnetcontrols.asp?df=100&amp;forumid=2373&amp;exp=0&amp;select=1524069 дала увидеть объект среди ActiveX и даже создать экземпляр в tstcon32 но этот объект не отрисовывается, хотя нужные мне методы можно вызвать и в HTML всё равно не отрисовывается
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.