0

我正在开发一个 WP8 应用程序,它可以提取任意 HTML 并使用 WebBrowser 控件和NavigateToString(). 有时 HTML 包含嵌入的视频,例如 YouTube 视频,例如。

<iframe height="380" src="http://www.youtube.com/embed/50m3v1deoid" width="689"></iframe>

并且视频不会加载,而是显示一条错误消息:视频播放需要 Adob​​e Flash Player 或支持 HTML5 的浏览器

如果包含相同 HTML 的外部网页被导航到Navigate()按预期加载视频。IsScriptEnabled设置为 True,但我猜这是从字符串加载的 iframe 的怪癖。

这是故意的吗?有没有解决的办法?

我缺少一个明显的解决方案,我的一个想法是使用套接字生成一个小型且基本的网络服务器,将其附加到 localhost 并使用 Navigate() 获取页面。那行得通吗?

4

1 回答 1

3

通常,我会花几个小时在这个问题上,然后在问完问题 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 文档类型,浏览器不会呈现为 HTML5,而 WP 不支持 Flash,因此不会显示视频。一旦有了 HTML5 文档类型,浏览器就能够加载 HTML5 播放器。

于 2013-05-07T00:12:57.760 回答