在WP8上使用iframe视频(Youtube)的WebBrowser.NavigateToString()

时间:2013-05-06 23:56:43

标签: c# html .net windows-phone-8 windows-phone

我正在开发一个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()来获取页面。那会有用吗?

1 个答案:

答案 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播放器。