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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> webBrowser JavaScript, Как программно задействовать JavaScript 
:(
    Опции темы
xSD
Дата 7.11.2010, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем доброго времени суток! 
Ребят, помогите пожалуйста! У меня такая ситуация, есть браузер (WebBrowser1), кнопка (Button1) и есть JavaScript ( Script.js) Подскажите пожалуйста, как программно задействовать этот скрипт при нажатии на кнопку (Button1) если скрипт при том лежит, допустим в директории (C:\Program Files\WebBrowser\script\script.js)
Заранее огромное спасибо! smile

Это сообщение отредактировал(а) xSD - 7.11.2010, 22:45
PM MAIL   Вверх
diadiavova
Дата 8.11.2010, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А что значит "выполнить"? У тебя в браузере есть документ и к нему надо подключить скрипт? Тогда так примерно:
Код

Dim script = WebBrowser1.Document.Body.CreateElement("script")
script.SetAttribute( "type", "text/jscript")
script.SetAttribute( "src", "C:\Program Files\WebBrowser\script\script.js")
WebBrowser1.Document.Body.AppendChild(script)



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


Новичок



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

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



Цитата(diadiavova @ 8.11.2010,  01:19)
А что значит "выполнить"? У тебя в браузере есть документ и к нему надо подключить скрипт?

Нет, мне просто нужно подключить скрипт (javascript) при нажатии на кнопку (button1) к браузеру (WebBrowser1)
PM MAIL   Вверх
diadiavova
Дата 8.11.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Что значит "подключить к браузеру" smile Если в браузер не загружен никакой документ, то скрипт к нему не подключишь. Скрипты выполняются в документе.


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


Новичок



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

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



Честно говоря, я вас вообще не понял smile
Можно примерчик smile


Мне нужно что бы в браузере отобразился скрипт, вот! smile

Это сообщение отредактировал(а) xSD - 8.11.2010, 15:38
PM MAIL   Вверх
diadiavova
Дата 8.11.2010, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(xSD @  8.11.2010,  15:37 Найти цитируемый пост)
Можно примерчик

А то, что я написал в первом посте - не примерчик что ли? smile Если это не то, объясни проблему подробнее, поскольку на тот вопрос, который ты задал я ответил.
Цитата(xSD @  8.11.2010,  15:37 Найти цитируемый пост)
Мне нужно что бы в браузере отобразился скрипт, вот!

Скрипт - это программа, поэтому он не отображается, а выполняется.


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


Новичок



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

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



Я хотел написать программу, смысл программы это смайлы в социальной сети (vkontakte.ru) 
У меня есть скрипт Smiles.js этот скрипт образует смайлы вконтакте!

Код

var VkSmiles = {
    // смайлики для панели
    smiles: {
        "O=)": "aa.gif",
        ":-)": "ab.gif",
        ":(": "ac.gif",
        ";-)": "ad.gif",
        ":-P": "ae.gif",
        "8-)": "af.gif",
        ":-D": "ag.gif",
        ":-[": "ah.gif",
        "=-O": "ai.gif",
        ":-*": "aj.gif",
        ":'(": "ak.gif",
        ":-X": "al.gif",
        ">:o": "am.gif",
        ":-|": "an.gif",
        ":-/": "ao.gif",
        "*JOKINGLY*": "ap.gif",
        "]:->": "aq.gif",
        "[:-}": "ar.gif",
        "*KISSED*": "as.gif",
        ":-!": "at.gif",
        "*STOP*": "av.gif",
        "*KISSING*": "aw.gif",
        "@}->--": "ax.gif",
        "*THUMBS UP*": "ay.gif",
        "*DRINK*": "az.gif",
        "*IN LOVE*": "ba.gif",
        "@=": "bb.gif",
        "*HELP*": "bc.gif",
        "\\m/": "bd.gif",
        "*OK*": "bf.gif",
        "*WASSUP*": "bg.gif",
        "*BRAVO*": "bi.gif",
        "*LOL*": "bj.gif",
        "*PARDON*": "bk.gif",
        "*NO*": "bl.gif",
        "*CRAZY*": "bm.gif",
        "*DONT_KNOW*": "bn.gif",
        "*DANCE*": "bo.gif",
        "*YAHOO*": "bp.gif",
        "*PRIVET*": "bq.gif",
        "*BYE*": "br.gif",
        "*YES*": "bs.gif",
        "*WALL*": "bu.gif",
        "*MAIL*": "bv.gif",
        "*SCRATCH*": "bw.gif"
    },

    // таблица отображения
    smiles_map: {
        "O:-)": "aa.gif",
        "O=)": "aa.gif",
        ":-)": "ab.gif",
        "=)": "ab.gif",
        ":)": "ab.gif",
        ":-(": "ac.gif",
        ":(": "ac.gif",
        ";(": "ac.gif",
        ";-)": "ad.gif",
        ";)": "ad.gif",
        ":-P": "ae.gif",
        "8-)": "af.gif",
        ":-D": "ag.gif",
        ":-[": "ah.gif",
        "=-O": "ai.gif",
        "o_O": "ai.gif",
        ":-*": "aj.gif",
        ":'(": "ak.gif",
        ":-X": "al.gif",
        ":-x": "al.gif",
        ">:o": "am.gif",
        ">:o": "am.gif",
        ":-|": "an.gif",
        ":-\\": "ao.gif",
        ":-/": "ao.gif",
        "*JOKINGLY*": "ap.gif",
        "]:->": "aq.gif",
        "]:->": "aq.gif",
        "[:-}": "ar.gif",
        "*KISSED*": "as.gif",
        ":-!": "at.gif",
        "*TIRED*": "au.gif",
        "*STOP*": "av.gif",
        "*KISSING*": "aw.gif",
        "@}->--": "ax.gif",
        "@}->--": "ax.gif",
        "*THUMBS UP*": "ay.gif",
        "*DRINK*": "az.gif",
        "*IN LOVE*": "ba.gif",
        "@=": "bb.gif",
        "*HELP*": "bc.gif",
        "\\m/": "bd.gif",
        "*OK*": "bf.gif",
        "*WASSUP*": "bg.gif",
        "*SUP*": "bg.gif",
        "*SORRY*": "bh.gif",
        "*BRAVO*": "bi.gif",
        "*LOL*": "bj.gif",
        "*ROFL*": "bj.gif",
        "*PARDON*": "bk.gif",
        "*NO*": "bl.gif",
        "*CRAZY*": "bm.gif",
        "*DONT_KNOW*": "bn.gif",
        "*UNKNOWN*": "bn.gif",
        "*DANCE*": "bo.gif",
        "*YAHOO*": "bp.gif",
        "*YAHOO!*": "bp.gif",
        "*HI*": "bq.gif",
        "*PREVED*": "bq.gif",
        "*PRIVET*": "bq.gif",
        "*HELLO*": "bq.gif",
        "*BYE*": "br.gif",
        "*YES*": "bs.gif",
        "*WALL*": "bu.gif",
        "*DASH*": "bu.gif",
        "*WRITE*": "bv.gif",
        "*MAIL*": "bv.gif",
        "*SCRATCH*": "bw.gif"
    },

    regex: /(O:-\)|O=\)|:-\)|:\)|=\)|:-\(|:\(|;\(|;-\)|;\)|:-P|8-\)|:-D|:-\[|=-O|o_O|:-\*|:\'\(|:-X|:-x|>:o|>:o|:-\||:-\\|:-\/|\*JOKINGLY\*|\]:-\>|\]:->|\[:-\}|\*KISSED\*|:-\!|\*TIRED\*|\*STOP\*|\*KISSING\*|\@\}-\>--|\@\}->--|\*THUMBS UP\*|\*DRINK\*|\*IN LOVE\*|\@\=|\*HELP\*|\\m\/|\*OK\*|\*WASSUP\*|\*SUP\*|\*SORRY\*|\*BRAVO\*|\*LOL\*|\*ROFL\*|\*PARDON\*|\*NO\*|\*CRAZY\*|\*DONT_KNOW\*|\*UNKNOWN\*|\*DANCE\*|\*YAHOO\*|\*YAHOO\!\*|\*HI\*|\*PREVED\*|\*PRIVET\*|\*HELLO\*|\*BYE\*|\*YES\*|\*WALL\*|\*DASH\*|\*WRITE\*|\*MAIL\*|\*SCRATCH\*)/gi,

    is_smile_table_shown: false,

    click_handler_added: false,
    
    smiles_per_line: 7,

    /*
     * Меняет на странице текстовые смайлы на графияеские анимированные
     */
    render: function(doc) {
        var t = this;
        /*
         * Фукнция, отображающие текстовые смайлики на графические
         */
        function map(str, p1, offset, s) {
            var image = t.smiles_map[p1];
            return "<img src='"+ VkbResources.smile_images[image] +"' title='"+p1+"' >";
        }
        function apply_smiles(doc, node) {
            var content = node.data;
            content = content.replace(t.regex, map);
            try {
                if (content != node.data) {
                    var new_node = doc.createElement('span');
                    new_node.innerHTML = content;
                    node.parentNode.replaceChild(new_node, node);
                }
            } catch(e) {
                alert(e);
            }
        }
        
        var nodes = doc.evaluate( "//body//text()",
                                        doc,
                                        null,
                                        XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
                                        null
                        );
        for(i = 0; i < nodes.snapshotLength; i++) {
            var node = nodes.snapshotItem(i);
            if(node.parentNode.toString() != '[object XPCNativeWrapper [object HTMLTextAreaElement]]')
                apply_smiles(doc, node);
        }
    },

    /*
     * Создает панель для выбора смайликов, которые будут добавляться в container
     *
     * @param doc объект класса Document
     * @param container поле, куда будут добавляться смайлики (обычно, textarea)
     */
    createBar: function(doc, container) {
        var t = this;

        function show_bar() {
            var smiles_table = doc.getElementById('vkbutton_smiles_table');
            smiles_table.style.display = 'block';
            t.is_smile_table_shown = true;
        }

        function hide_bar() {
            var smiles_table = doc.getElementById('vkbutton_smiles_table');
            smiles_table.style.display = 'none';
            t.is_smile_table_shown = false;
        }

        function docClickHandler(e) {
            var elem = e.originalTarget;
            var smiles_table = doc.getElementById('vkbutton_smiles_table');

            if(elem.getAttribute('is_smile_button')) {

                /*
                 * При клике по кнопке
                 */
                switch(t.is_smile_table_shown) {
                    case true:
                        hide_bar();
                        break;
                    case false:
                        smiles_table.setAttribute('container_id', elem.getAttribute('container_id'));
                        // показ в месте клика
                        smiles_table.style.top = doc.defaultView.pageYOffset + e.clientY  + 'px';
                        smiles_table.style.left = doc.defaultView.pageXOffset + e.clientX + 'px';
                        show_bar();
                        break;
                }
            } else if (elem.getAttribute('is_smile')) {
                /*
                 * Надо самому себе объяснить, как это все работает )))
                 * Есть таблица со смайликами, показываемая в месте клика, привязанной
                 * к соотвествующему контейнеру. При щелчке по кнопке, в поле container таблицы
                 * со смайликами сохраняется ID контейнера, куда должен быть добавлен смайл.
                 * Когда смайл выбран и пользователь кликнул по нему, восстанавливается
                 * этот контейнер и его значение дополняется текстовой записью смайла.
                 */
                var container = doc.getElementById(smiles_table.getAttribute('container_id'));
                if(container) {
                    container.value += ' '+elem.title + ' ';
                    container.focus();
                };
                hide_bar();

            } else if(elem.getAttribute('is_smile_table_close')) {
                hide_bar();
            } else {
                /*
                 * При клике вне таблицы прячем ее.
                 */
                if(t.is_smile_table_shown) {
                    hide_bar();
                }
                
            }
        }

        /*
         * Таблица со смайликами
         */
        function createSmileTable() {
            var table = doc.createElement('table');
            table.setAttribute('style', 'display:none; z-index: 9999; position: absolute; top: 0px; left: 0px; border: 1px solid black; background: #ffffff');
            table.setAttribute('id', 'vkbutton_smiles_table');

            // строка с кнопкой "закрыть"
            var tr = doc.createElement('tr');
            var td = doc.createElement('td');
            td.setAttribute('colspan', t.smiles_per_line);
            td.setAttribute('style', 'text-align: right;');

            // собственно, сама кнопка "закрыть"
            var a = doc.createElement('a');
            a.setAttribute('style', 'cursor: pointer');
            a.setAttribute('is_smile_table_close', true);
            a.appendChild(doc.createTextNode('закрыть'));

            td.appendChild(a);
            tr.appendChild(td);
            table.appendChild(tr);

            // строки со смайликами
            tr = doc.createElement('tr');
            var counter = 0;
            for(var smile in t.smiles) {
                //dump(smile+'\r\n');
                // добавляем картинку
                var img = new Image();
                img.setAttribute('title', smile);
                img.setAttribute('style', 'cursor: pointer; border: 1px solid white;');
                img.setAttribute('src', VkbResources.smile_images[t.smiles[smile]]);
                img.setAttribute('is_smile', true);
                /*
                 * При перемещении
                 */
                img.addEventListener('mouseover', function(e) {
                    this.style.border = '1px solid red';
                }, false);
                img.addEventListener('mouseout', function(e) {
                    this.style.border = '1px solid white';
                }, false);

                // каждую картинку - в отдельную ячейку
                td = doc.createElement('td');
                td.appendChild(img);
                tr.appendChild(td)

                // перенос на новую строку
                if(++counter == t.smiles_per_line) {
                    table.appendChild(tr);

                    tr = doc.createElement('tr');
                    counter = 0;
                }
            }
            table.appendChild(tr);

            return table;
        }

        /*
         * Кнопка для показа таблицы смайликов
         *
         */
        function createButton(container_id) {
            var img = doc.createElement('img');
            img.src = VkbResources.smile_images['ab.gif'];
            img.setAttribute('style', 'cursor: pointer;');
            img.setAttribute('is_smile_button', true);
            img.setAttribute('container_id', container_id);

            var div = doc.createElement('div');
            div.appendChild(img);
            return div;
        }

        // одна таблица на страницу
        if(!doc.getElementById('vkbutton_smiles_table')) {
            doc.body.appendChild(createSmileTable());
            doc.addEventListener('click', docClickHandler, false);
        }

        if(container.getAttribute('has_smile_table'))
            return;

        var button = createButton(container.getAttribute('id'));
        /*
         *  При вставке кнопки почему-то исчезает значение поля редактирования.
         *  Поэтому сохраняем значение и после вставки кнопки восстаналиваем его.
         */
        container.setAttribute('has_smile_table', true);
        var value = container.getAttribute('value');
        container.parentNode.insertBefore(button, container);
        container.setAttribute('value', value);

    },

    /*
     * Возвращает список контейнеров для смайликов на данной странице
     */
    findContainers: function(doc) {
        return doc.getElementsByTagName('textarea');
    },

    /*
     * Добавляет таблицу смайликов и сами смайлы на страницу
     *
     */
    addToPage: function(doc) {
        if(!VkButton.getPref('smiles') || doc.location.href.indexOf('im.php') >= 0)
            return;

        this.render(doc);
        var containers = this.findContainers(doc);
        var replyField = doc.getElementById('replyField');
        for(i = 0; i < containers.length; i++) {
            if (containers[i]) {
                /*
                 * Не обрабатывать заглушку для отправки ответного сообщения во мнениях
                 */
                if(replyField && containers[i].getAttribute('id') == 'reply_area')
                    continue;
                this.createBar(doc, containers[i]);
            }
        }
    }
    
};


Я хочу этот скрипт встроить в программу и что бы всё делалось программно! Что бы при нажатии на кнопку вконтакте появились смайлы! вот вся суть! smile

Это сообщение отредактировал(а) diadiavova - 8.11.2010, 19:25
PM MAIL   Вверх
diadiavova
Дата 8.11.2010, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



xSD, Ну этот скрипт все равно работает на странице. На странице вконтакте в данном случае. Все просто: когда у тебя загружена страница по нажатию кнопки выполни тот код, который я привел. Не копипастой его вставляй ессно, а замени WebBrowser1 на реальное имя браузера в твоей программе. Таким образом ты подключишь свой скрипт. 


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


Новичок



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

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



Как понять на реальное имя браузера? 
И ещё, вот тот код который вы привели в первый раз "WebBrowser1.Document.Body.CreateElement" эту строку он мне подчеркивает и говорит что где то ошибка! 

Это сообщение отредактировал(а) xSD - 8.11.2010, 19:43
PM MAIL   Вверх
diadiavova
Дата 8.11.2010, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(xSD @  8.11.2010,  19:37 Найти цитируемый пост)
подчеркивает и говорит что где то ошибка! 

Проперся smile 
Код

WebBrowser1.Document.CreateElement


Добавлено через 2 минуты и 5 секунд
Цитата(xSD @  8.11.2010,  19:37 Найти цитируемый пост)
Как понять на реальное имя браузера? 

Ну я не знаю под каким именем у тебя в программе браузер числится. Если ты просто добавил его на форму и ничего не менял и он там у тебя единственный, то имя будет именно таким как в моем примере.


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


Новичок



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

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



Блин, всё равно смайлы не отражаются, что делать?!
 smile 
PM MAIL   Вверх
diadiavova
Дата 8.11.2010, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Я не знаю что это за скрипт и как он работает. Возможно надо вызвать какой-нибудь метод этого скрипта или еще что-то в этом же роде. Я этого не знаю. Спроси там, где ты его взял.


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


Новичок



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

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



а как сделать так, как в Opera
Указать папку со скриптом
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

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

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


 




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


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

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