我一直试图从WP8上的webbrowser获取元标记信息,但没有成功。
我试过:
var myDesc = (string)myBrowser.InvokeScript("eval", " $('meta[name=description]').attr('content');");
这......
string jsString = "";
jsString += " var metas = document.getElementsByTagName('meta'); ";
jsString += " var data = 'test'; ";
jsString += " var mLen = metas.length; ";
jsString += " for(var i=0;i<mLen;i++){ ";
jsString += " if(metas[i].getAttribute('name').toLowerCase() == 'description'){ ";
jsString += " data = metas[i].getAttribute('content'); ";
jsString += " } ";
jsString += " } ";
myBrowser.InvokeScript("eval", new string[] { jsString });
var myDesc = (string)myBrowser.InvokeScript("eval", "data;");
这......
myBrowser.InvokeScript("eval", new string[] { "var desc = document.getElementsByName('description')[0].getAttribute('content');" });
并完成所有错误:
{System.SystemException:发生了未知错误。错误: 80020101.在Microsoft.Phone.Controls.NativeMethods.ValidateHResult(Int32 hr)at at Microsoft.Phone.Controls.WebBrowserInterop.InvokeScript(字符串 scriptName,String [] args)at Microsoft.Phone.Controls.WebBrowser.InvokeScript(String scriptName, String [] args)...
有人能帮助我吗?
最诚挚的问候!!
答案 0 :(得分:0)
首先在xaml中添加WebBrowser并将IsScriptEnabled设置为true。
<phone:WebBrowser Name="webBrowser" Source="http://www.baidu.com/" IsScriptEnabled="True"/>
第二次注册事件:LoadedCompeted和ScriptNotify
webBrowser.LoadCompleted += webBrowser_LoadCompleted;
webBrowser.ScriptNotify += webBrowser_ScriptNotify;
第三次注入javascript代码
void webBrowser_LoadCompleted(object sender, NavigationEventArgs e)
{
webBrowser.InvokeScript("eval",@"window.Init=function(){var metas=document.getElementsByTagName('meta');var str='';for(i=0;i<metas.length;i++){str+='name:'+metas[i].getAttribute('name')+',content:'+metas[i].getAttribute('content')+';;}window.external.notify(str);}");
webBrowser.InvokeScript("Init");
}
最后,您将在webBrowser_ScriptNotify事件中获取元信息
void webBrowser_ScriptNotify(object sender, NotifyEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.Value);
}
希望这会有所帮助:D