Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> script injection в webbrowser 
V
    Опции темы
draiv
Дата 15.4.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.5.2007

Репутация: нет
Всего: нет



Подскажите как правильно вставить свой скрипт в страницу загружаемую webbrowser ом.
Пробую так - на DocumentCompleted меняю DocumentText так:
wb1.DocumentText = wb1.DocumentText.Replace("</head>", @"<script>alert('asd')</script></head>");

Добавлено через 10 минут и 47 секунд
черт - послал нечаянно преждевременно

Добавлено через 11 минут и 2 секунды
Подскажите как правильно вставить свой скрипт в страницу загружаемую webbrowser ом.

Пробую так - на DocumentCompleted меняю DocumentText так:
wb1.DocumentText = wb1.DocumentText.Replace("</head>", @"<script>alert('asd')</script></head>"); 
при этом мой скрипт срабатывает, но не работают другие скрипты, имеющиеся на странице, родгружаемые по src. 
Я так предполагаю -изза того, что после моего изменения DocumentText опять вызывается метод Navigate и контролу передается мой измененный html и при этом наверно все пути в src скриптов берутся не относительно сайта что я грузил а относительно моей машины - поэт не находятся.
Подскажите так это или нет и как нужно вставлять script, чтоб при этом не нарушалась работа уже имеющихся?
(еще желательно чтоб эта вставка делалась до DocumentCompleted)
PM MAIL   Вверх
diadiavova
Дата 15.4.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 16
Всего: 142



Вставить скрипт можно так
Код


        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            HtmlDocument doc = webBrowser1.Document;
            HtmlElement script = doc.CreateElement("script");
            script.SetAttribute("type","text/javascript" );
            script.SetAttribute("id", "myScript");
            HtmlElement btn = doc.CreateElement("input");
            btn.SetAttribute("type", "button");
            btn.SetAttribute("value", "show");
            btn.SetAttribute("id", "btn1");
            doc.Body.AppendChild(script);
            doc.Body.AppendChild(btn);
            
            //Первый вариант

            object uScript = doc.DomDocument.GetType().GetMethod("getElementById" )
                .Invoke(doc.DomDocument,new object[]{"myScript"});
            uScript.GetType().GetProperty("text")
                .SetValue(uScript,"function hellow1(){alert('Hellow from page!')}btn1.onclick=hellow1;",null);

            //Второй вариант
            //btn.AttachEventHandler("onclick", hellow2);
            
        }

        void hellow2(object sender,EventArgs e)
        {
            MessageBox.Show("Hellow from code!");
        }



Здесь в документ вставляется кнопка, далее : в первом варианте вставляется скрипт с функцией  и привязкой её к событию click этой кнопки. Во втором варианте клик кнопки обрабатывается в коде C#.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
draiv
Дата 16.4.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.5.2007

Репутация: нет
Всего: нет



Спасибо, теперь разобрался.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0642 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.