本文所提及的所有范例都已添加或更新到新版 aardio 范例内,请到「范例 / Web 界面」目录下查看。
排名第一的是 video.js , 好吧我们凑个热闹就用他了。 import web.view; import wsock.tcp.asynHttpServer; import win.ui; /*DSG{{*/var winform = win.form(text='WebView2(web.view) 播放视频并支持全屏';right=1008;bottom=616)/*}}*/ var httpServer = wsock.tcp.asynHttpServer(); httpServer.run( { ['/index.html'] = /** <html> <head> <style type='text/css'> html,body { height: 100%; width: 100%; margin: 0;overflow: hidden; }</style> <!--第一步:引入下面2个文件加载播放器 --> <link href='https://cdn./npm/video.js@7.15.4/dist/video-js.min.css' rel='stylesheet'> <script src='https://cdn./npm/video.js@7.15.4/dist/video.min.js'></script></head> <body> <!-- 第二步:插入视频文件 --> <video id='my-player' class='video-js' controls preload='auto' poster='https://vjs./v/oceans.png' style='width:100%;height:100%' data-setup='{}'> <source src='http://download./demo/video.aardio' type=' video/mp4'> </source> </video><script> //第三步:修改播放器选项,这一步可以省略 videojs('my-player', { controlBar: { fullscreenToggle: true } }); //第四步:响应网页全屏请求 document.onfullscreenchange = function (event) { aardio.fullscreen(!!document.fullscreenElement); //调用 aardio 窗口的全屏函数 } /* 注意原生 video 的全屏按钮只是网页内部最大化,不会触发 onfullscreenchange 事件。 vedio.js 播放器的全屏按钮则是调用视频节点的 requestFullscreen() 函数实现了真正的全屏。 */</script></body></html>**/;}); var wb = web.view( winform ); wb.external = { //浏览器仅仅是发出全屏指令,在这里用 aardio 控制全屏 fullscreen = lambda(fs) winform.fullscreen(fs) }wb.go( httpServer.getUrl('index.html') ); winform.show(); win.loopMessage();这个范例在这里可以找到:
wb.external = { fullscreen = lambda(fs) winform.fullscreen(fs) } 然后在 JavaScript 中加上以下的关键代码: document.onfullscreenchange = function (event) { aardio.fullscreen(!!document.fullscreenElement); //调用 aardio 窗口的全屏函数 } 注意 document.fullscreenElement 是当前请求全屏的节点,如果这个属性不是 null 表示需要全屏,将这个属性用 !! 操作符转为布尔值刚好可以作为 winform.fullsreen() 函数的参数控制全屏或取消全屏。 document.addEventListener('MSFullscreenChange', function () { external.fullscreen(!!document.msFullscreenElement)}, false); 上面可以看到,IE检测全屏节点的属性是 document.msFullscreenElement,这个名字跟 WebView2 也是不同的,要注意区分。
import web.form.ie11; var wb = web.form.ie11( winform );
//导出网页 JavaScript 可调用的 external 对象。 wb.external = { //浏览器仅仅是发出全屏指令,在这里用 aardio 控制全屏 fullscreen = lambda(fs) winform.fullscreen(fs) }
wb.html = /** <html> <head> <style type='text/css'> html,body { height: 100%; width: 100%; margin: 0;overflow: hidden; } </style> <!--第一步:引入下面2个文件加载播放器 --> <link href='https://cdn./npm/video.js@7.15.4/dist/video-js.min.css' rel='stylesheet'> <script src='https://cdn./npm/video.js@7.15.4/dist/video.min.js'></script> </head> <body>
<!-- 第二步:插入视频文件 --> <video id='my-player' class='video-js' controls preload='auto' poster='https://vjs./v/oceans.png' style='width:100%;height:100%' data-setup='{}'> <source src='http://download./demo/video.aardio' type=' video/mp4'> </source> </video>
<script>
//第三步:修改播放器选项,这一步可以省略 videojs('my-player', { controlBar: { fullscreenToggle: true } });
//第四步:响应网页全屏请求注意 MSFullscreenChange 大小写不能错 document.addEventListener('MSFullscreenChange', function () { external.fullscreen(!!document.msFullscreenElement) }, false); </script> </body></html> **/
winform.show(); win.loopMessage(); aardio 范例中以下位置可以找到上面的代码:
是不是简单又方便彻底完美解决问题?! import web.kit.form; import web.npPlugin.flash; import wsock.tcp.asynHttpServer; import win.ui; /*DSG{{*/ var winform = win.form(text='web.kit 支持 HTML5 视频(基于 Flash)';right=1008;bottom=616) /*}}*/
var httpServer = wsock.tcp.asynHttpServer(); httpServer.run( { ['/index.html'] = /** <html> <head> <style type='text/css'> html,body { height:100%;width:100%;margin:0;overflow:hidden; } </style> <script src='https://cdn./npm/html5media@1.2.1/dist/api/1.2.1/html5media.js'></script> </head> <body> <video src='http://download./demo/video.aardio' width='100%' height='100%' controls preload></video> </body> </html> **/; });
//通过HTTP服务器 Flash 才能访问网络,否则会有警告对话框。 //aardio 仅用数句代码就可以启动一个嵌入式HTTP服务器,不会增加软件体积。 var mb = web.kit.form( winform ); mb.go( httpServer.getUrl('index.html') );
winform.show(); win.loopMessage(); 以上代码在范例中的位置:
aardio 中其他一些 Web 界面解决方案,例如 chrome.app 这些就是直接运行浏览器和网页,与网页开发没多大区别。更多的技巧大家可以继续探索。 |
|