Можно ли обнаружить элемент DOM, подключенный к элементу управления WP7 WebBrowser? - PullRequest
2 голосов
/ 30 ноября 2011

Можно ли обнаружить элементы DOM в месте, которое пользователь нажимает на веб-сайте, с помощью элемента управления WP7 WebBrowser?Я хотел бы позволить пользователю идентифицировать определенные разделы отображаемой страницы.

Ответы [ 2 ]

4 голосов
/ 30 ноября 2011

Да.Этот код работает очень хорошо для меня:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        // first define a new function which serves as click handler
        webBrowser1.InvokeScript("eval", "this.newfunc_eventHandler = function(e) { window.external.notify(e.srcElement.tagName); }");
        // attach function to body
        webBrowser1.InvokeScript("eval", "document.body.addEventListener('click', newfunc_eventHandler, false);");
    }

    private void webBrowser1_ScriptNotify(object sender, NotifyEventArgs e)
    {
        // this should be called every time you tap an element; the value should be its tag name
        Debug.WriteLine(e.Value);
    }

Он соответствует ответу Джастина (который бил меня во время кодирования).Сначала он определяет обработчик кликов, который затем присоединяется к телу страницы (все через InvokeScript).Каждый раз, когда вы нажимаете элемент ScriptNotify, он должен вызываться на WebBrowser, сообщающем имя тега прослушиваемого элемента.

Убедитесь, что вы установили IsScriptEnabled true для элемента управления своего браузера.

1 голос
/ 30 ноября 2011

Полагаю, вам нужно будет что-то построить из события ScriptNotify .

В этот момент вы зарегистрируете обработчик событий JavaScript как обычно, но этот обработчик событий будет, в свою очередь, позвоните window.external.notify("someMessageToHandle");.Затем вам нужно будет соответствующим образом направить вызовы.

Если у вас нет возможности добавлять обработчики событий JavaScript непосредственно на страницу, вы можете вместо этого добавить их, используя WebBrowserControl.InvokeScript .

...