我正在开发一个WP8应用程序,该应用程序可以使用WebBrowser控件和NavigateToString()
来提取任意HTML并进行渲染。有时,HTML包含嵌入的视频,例如YouTube视频,例如
<iframe height="380" src="http://www.youtube.com/embed/50m3v1deoid" width="689"></iframe>
视频无法加载,而是显示错误消息:视频播放需要Adobe Flash Player或支持HTML5的浏览器。
如果导出包含相同HTML的外部网页使用Navigate()
视频按预期加载。 IsScriptEnabled
设置为True,但我猜这是从字符串加载iframe的怪癖。
这是打算吗?有办法解决这个问题吗?
我缺少一个明显的解决方案,我的想法是使用套接字生成一个小的基本Web服务器,将其附加到localhost并使用Navigate()来获取页面。那会有用吗?
答案 0 :(得分:2)
典型的,我花了几个小时的时间,然后在提问后10分钟找出它。
问题是我没有在HTML中设置DOCTYPE,请考虑一下:
browser.NavigateToString("<html><head><title></title></head><body>" +
"<iframe height=\"383\" src=\"http://www.youtube.com/embed/9bZkp7q19f0\" width=\"680\"></iframe>"+
"</body></html>");
这不起作用。视频显示错误。但是,这个:
browser.NavigateToString("<!doctype html>" +
"<html><head><title></title></head><body>" +
"<iframe height=\"383\" src=\"http://www.youtube.com/embed/9bZkp7q19f0\" width=\"680\"></iframe>"+
"</body></html>");
工作正常,唯一的区别是doctype声明。
故事的寓意总是使用格式良好的HTML。
我猜这是因为没有HTML5 doctype,浏览器不会呈现为HTML5而WP不支持Flash,因此不显示视频。一旦有HTML5文档类型,浏览器就可以加载HTML5播放器。