是否可以使用WP7 WebBrowser控件在用户点击网站的某个位置检测DOM元素?我想让用户识别呈现页面的某些部分。
答案 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添加它们。