Замена части кода в Webbrowser

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Замена части кода в Webbrowser

Сообщение waresok » 07.03.2012 (Ср) 13:55

Использую компонент Webbrowser для автозаполнения формы отчета. Все бы хорошо, но при нажатии на кнопку Просмотр результат открывается в новом окне т.к. в коде кнопки присутствует параметр target="_blank". Подскажите, как заменить в коде странице (можно во всем документе) _blank на _self что бы при нажатии на кнопку Просмотр результат отображался в том же окне Webbrowser.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Замена части кода в Webbrowser

Сообщение Antonariy » 07.03.2012 (Ср) 14:10

document.forms(узнать индекс формы).target = "_self"
Лучший способ понять что-то самому — объяснить это другому.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 07.03.2012 (Ср) 22:58

Если существуют события Navigating и NewWindow, то можно попытаться обрабатывать их.

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re: Замена части кода в Webbrowser

Сообщение waresok » 09.03.2012 (Пт) 8:14

Antonariy писал(а):document.forms(узнать индекс формы).target = "_self"


дело в том, что у кнопки Просмотр код такой
Код: Выделить всё
<input type="submit" value="Просмотр" disabled="disabled" id="previewBtn">


а id previewBtn ведет к java скрипту в начале страницы

Код: Выделить всё
    $("#previewBtn").click(function() {
        $("#actionType").val("html");
        $("#action").attr("target", "_blank");
    });


получается в этом скрипте и нужно "_blank" заменить на "_self"

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re:

Сообщение waresok » 09.03.2012 (Пт) 8:39

Qwertiy писал(а):Если существуют события Navigating и NewWindow, то можно попытаться обрабатывать их.

примеры нашел только на отмену открытия нового окна, да и в любом случае хотелось бы проще, как написал Antonariy, только в скрипте java заменить _blank на _self нужно.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.03.2012 (Пт) 10:45

Что-нибудь типа document.getElementById("previewBtn").onclick=""?

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re:

Сообщение waresok » 09.03.2012 (Пт) 21:29

Qwertiy писал(а):Что-нибудь типа document.getElementById("previewBtn").onclick=""?


попробовал, не помогает

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.03.2012 (Сб) 0:22

waresok писал(а):попробовал, не помогает

Что именно пробовал? Я не просто так написал "Что-нибудь типа"...
1. onclick, onClick, click.
2. "", null, function() { return true; }, return true;, ...
И это надо сделать после полной загрузки страницы.

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re:

Сообщение waresok » 10.03.2012 (Сб) 10:53

Qwertiy писал(а):
waresok писал(а):попробовал, не помогает

Что именно пробовал? Я не просто так написал "Что-нибудь типа"...
1. onclick, onClick, click.
2. "", null, function() { return true; }, return true;, ...
И это надо сделать после полной загрузки страницы.


Все варианты перепробывал ваши, сразу после полной загрузки страницы, 0 реакции
Код: Выделить всё
'WebBrowser2.Document.getElementById("previewBtn").onclick = "null"
'WebBrowser2.Document.getElementById("previewBtn").onclick = "function()"
'WebBrowser2.Document.getElementById("previewBtn").onclick = "{ return true; }"
'WebBrowser2.Document.getElementById("previewBtn").onclick = "return true;"

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.03.2012 (Сб) 13:17

На файле
Код: Выделить всё
<!DOCTYPE html>

<html>

<head>
  <title>Тест формы с _blank через javascript</title>
</head>

<body>
  <div>
    <form id="Frm" action="./form.html" method="get">
      <input type="text" id="Txt" name="Txt"/>
      <input type="submit" id="BtnOk" onclick="document.getElementById('Frm').target='_blank'; return true;" />
    </form>
  </div>
</body>

</html>
в VB.NET работает так:
Код: Выделить всё
WebBrowser1.Document.GetElementById("BtnOk").SetAttribute("onclick", "return true;")

А варианты с click вместо onclick пробовал?
И под null я имел в виду не ... = "null", а ... = Nothing.

waresok писал(а):
Код: Выделить всё
'WebBrowser2.Document.getElementById("previewBtn").onclick = "function()"
'WebBrowser2.Document.getElementById("previewBtn").onclick = "{ return true; }"

Что это? Имелось в виду
Код: Выделить всё
WebBrowser2.Document.getElementById("previewBtn").onclick = "function() { return true; }"

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re: Замена части кода в Webbrowser

Сообщение waresok » 10.03.2012 (Сб) 15:52

Код: Выделить всё
WebBrowser1.Document.GetElementById("BtnOk").SetAttribute("onclick", "return true;")
для VB6 compile error

если onclick заменить на click, то ошибка run-time 445

Код: Выделить всё
WebBrowser2.Document.getElementById("previewBtn").onclick = "function() { return true; }"
0 реакции

спасибо большое за ответы!

а нельзя ли пойти другим путем, неужели после загрузки документа невозможно в коде удалить/заменить определенную строку на _self? то есть до нажатия кнопки Просмотр команда _blank уже не существовала бы.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.03.2012 (Сб) 16:20

waresok писал(а):а нельзя ли пойти другим путем, неужели после загрузки документа невозможно в коде удалить/заменить определенную строку на _self? то есть до нажатия кнопки Просмотр команда _blank уже не существовала бы.

Можно. Только я не знаю как :)

А можешь на моём файле проверить? А то начинает возникать подозрение, что то подключение обработчика не эквивалентно моему.

PS: Среда VB6 падает как только пытаюсь подключить MS Internet Controls к проекту :(

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Замена части кода в Webbrowser

Сообщение Хакер » 10.03.2012 (Сб) 16:32

Qwertiy писал(а):PS: Среда VB6 падает как только пытаюсь подключить MS Internet Controls к проекту :(

Под ограниченной учётной записью такое случается. Попал?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.03.2012 (Сб) 16:57

Хакер писал(а):Под ограниченной учётной записью такое случается. Попал?

Ага :)

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re:

Сообщение waresok » 10.03.2012 (Сб) 17:55

Qwertiy писал(а):
waresok писал(а):а нельзя ли пойти другим путем, неужели после загрузки документа невозможно в коде удалить/заменить определенную строку на _self? то есть до нажатия кнопки Просмотр команда _blank уже не существовала бы.

Можно. Только я не знаю как :)

А можешь на моём файле проверить? А то начинает возникать подозрение, что то подключение обработчика не эквивалентно моему.

PS: Среда VB6 падает как только пытаюсь подключить MS Internet Controls к проекту :(


на вашем файле проверил, все варианты не срабатывают,
а
WebBrowser1.Document.GetElementById("BtnOk").SetAttribute("onclick", "return true;")
в V6 ошибка компиляции

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.03.2012 (Сб) 21:13

Хакер, у меня получилось создать проект с WebBrowser, но теперь при его открытии получаю такое сообщение:
File not found 1.png
File not found 1.png (10.89 Кб) Просмотров: 3519
независимо от того, от администратора это делается или нет. Естественно, ничего не работает.
Лог файл:
Код: Выделить всё
Line 13: Class SHDocVwCtl.WebBrowser of control Wbb was not a loaded control class.

При попытке создать от админа новый проект и подключить MS Internet Controls получаю аналогичное сообщение:
File not found 2.png
File not found 2.png (10.01 Кб) Просмотров: 3519

Что сделать?

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re: Замена части кода в Webbrowser

Сообщение waresok » 11.03.2012 (Вс) 9:14

Qwertiy, проверьте путь, у меня так
mic.JPG
mic.JPG (37.64 Кб) Просмотров: 3508


или отредактируйте файл проекта vbp

должна быть ссылка на объект такая
Код: Выделить всё
Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; SHDOCVW.dll


~вместо первой или второй ссылки ниже
err.JPG
err.JPG (15.04 Кб) Просмотров: 3508

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re: Замена части кода в Webbrowser

Сообщение waresok » 11.03.2012 (Вс) 11:39

Qwertiy, ваш пример удалось запустить, все работает! но в моем случае это не помогает, т.к. код кнопки просмотр
Код: Выделить всё
<input type="submit" value="Просмотр" disabled="disabled" id="previewBtn">, здесь нет события onclick


вначале сраницы есть скрипт, вот его работу и нужно предотвратить! ваша строка здесь не работает

Код: Выделить всё
    $("#previewBtn").click(function() {
        $("#actionType").val("html");
        $("#action").attr("target", "_blank");
    });


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

    TopList