是否有可能检测到WP7 WebBrowser控件中的DOM元素?

时间:2011-11-29 21:03:43

标签: windows-phone-7 webbrowser-control

是否可以使用WP7 WebBrowser控件在用户点击网站的某个位置检测DOM元素?我想让用户识别呈现页面的某些部分。

2 个答案:

答案 0 :(得分:4)

是。这段代码非常适合我:

    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);
    }

Justin的回答(在编码时谁打败了我)。它首先定义一个单击处理程序,然后将其附加到页面的主体(全部通过InvokeScript)。每次点击元素ScriptNotify时,都应在WebBrowser上调用报告元素的标记名称。

确保您已为浏览器控件设置IsScriptEnabled

答案 1 :(得分:1)

我猜你必须从the ScriptNotify Event建立一些东西。

此时,您将照常注册JavaScript事件处理程序,但事件处理程序将依次调用window.external.notify("someMessageToHandle");。然后,您必须适当地路由呼叫。

如果您无法直接在页面上添加JavaScript事件处理程序,则可以使用WebBrowserControl.InvokeScript添加它们。