WebBrowser.NavigateToString() с видео iframe (Youtube) на WP8

Я работаю над приложением WP8, которое извлекает произвольный HTML и отображает его с помощью элемента управления WebBrowser и NavigateToString(). Иногда HTML содержит встроенные видео, такие как видео YouTube, например.

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

И видео не загружается, вместо этого отображается сообщение об ошибке: Для воспроизведения видео требуется Adobe Flash Player или браузер с поддержкой HTML5.

Если перейти на внешнюю веб-страницу, содержащую тот же HTML-код, с помощью Navigate(), видео загружается, как и ожидалось. IsScriptEnabled установлено значение True, но я предполагаю, что это причуда с фреймами, загружаемыми из строк.

Это предназначено? Есть ли способ обойти это?

Если не считать очевидного решения, которого мне не хватает, у меня была идея создать небольшой базовый веб-сервер с использованием сокетов, прикрепить его к локальному хосту и использовать Navigate() для получения страницы. Будет ли это работать?


person zi3guw    schedule 06.05.2013    source источник


Ответы (1)


Типично, я трачу на это несколько часов, а затем выясняю это через 10 минут после того, как задаю вопрос.

Проблема заключалась в том, что я не устанавливал DOCTYPE в HTML, учтите следующее:

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>");

Работает нормально, и единственное отличие — это объявление типа документа.

Мораль этой истории — всегда используйте правильно сформированный HTML.

Я предполагаю, что причина этого в том, что без типа документа HTML5 браузер не отображает HTML5, а WP не поддерживает flash, поэтому видео не отображается. Когда есть тип документа HTML5, браузер может загрузить проигрыватель HTML5.

person zi3guw    schedule 07.05.2013