locked
Подписка на callback событие JavaScript функции в WebBrowser RRS feed

  • Вопрос

  • Доброго времени суток.

    У меня есть компонент WebBrowser и JavaSript функция с callback функцией:

    function start() {
          my_object.subscribe("chanel_name", function(data) {
                   alert(data);
            });
       }

    Я могу вызвать мою функцию:

    Browser.InvokeScript ("start")

    Но как я могу подписаться на callback событие:

    function(data) {
                   alert(data);
            });

    если, мне нужно использовать переменную data в C# коде?

    Заранее спасибо.

    28 января 2013 г. 9:40

Ответы

  • Спасибо за подробный ответ. 

    К сожалению, WebBrowser в Windows Phone 7 не поддерживает свойство:

    ObjectForScripting

    Я нашел такой способ:

    Browser.ScriptNotify += Browser_ScriptNotify;
    
    void Browser_ScriptNotify(object sender, NotifyEventArgs e)
    {
        MessageBox.Show(e.value);
    }
    

    В JavaScript:

    window.external.Notify("value");
    А есть способы реализовать Ваш пример, но без ObjectForScripting? 

    • Помечено в качестве ответа Abolmasov Dmitry 31 января 2013 г. 11:07
    29 января 2013 г. 15:13

Все ответы

  • Привет

    Для того, чтобы из javascript можно было вызвать C# событие через WebBrowser вам нужно определить специальный класс, который будет приниать событие:

     [System.Runtime.InteropServices.ComVisibleAttribute(true)]
        public class ScriptInterface
        {
            public void callMe()
            {
                … // Do something interesting
            }
        }
        webBrowser1.ObjectForScripting = new ScriptInterface();

    А после в javascript определить вызов этой функциии так:
    window.external.callMe();

    Так вы сможете передать парамерт и получить событие

    Для связи [mail]

    29 января 2013 г. 7:29
  • Спасибо за подробный ответ. 

    К сожалению, WebBrowser в Windows Phone 7 не поддерживает свойство:

    ObjectForScripting

    Я нашел такой способ:

    Browser.ScriptNotify += Browser_ScriptNotify;
    
    void Browser_ScriptNotify(object sender, NotifyEventArgs e)
    {
        MessageBox.Show(e.value);
    }
    

    В JavaScript:

    window.external.Notify("value");
    А есть способы реализовать Ваш пример, но без ObjectForScripting? 

    • Помечено в качестве ответа Abolmasov Dmitry 31 января 2013 г. 11:07
    29 января 2013 г. 15:13
  • Ох, извиняюсь, проглядел что вопрос по Windows Phone.

    Тот вариант, что вы нашли является единственным решением данной проблемы, реализовать как у меня в примере не получится.


    Для связи [mail]

    31 января 2013 г. 11:07