<web-view>

<web-view> 是一个网页容器。

子组件

示例代码

  1. <template>
  2. <div class="app">
  3. <web-view ref="reflectName" class="webview"> </web-view>
  4. </div>
  5. </template>
  6. <style>
  7. .app {
  8. width: 750px;
  9. flex: 1;
  10. }
  11. .webview {
  12. flex: 1;
  13. }
  14. </style>
  15. <script>
  16. export default {
  17. mounted() {
  18. this.$refs.reflectName.setUrl('https://eeui.app');
  19. }
  20. };
  21. </script>

配置参数

属性名 类型 描述 默认值
url String 网页地址 -
content String 网页内容 -
progressbarVisibility Boolean 是否显示进度条 true
scrollEnabled Boolean 是否可以滚动 true
enableApi Boolean 开启eeui等原生交互模块,详见:注① true
userAgent String 自定义浏览器userAgent(保留原有的UA) -
customUserAgent String 完全自定义浏览器userAgent(去除原有的UA) -
transparency Boolean 设置背景透明(前提是网页背景也是透明,否则无效) false

例如:

  1. //示例1
  2. <web-view
  3. ref="reflectName"
  4. url="https://eeui.app"></web-view>
  5. //示例2
  6. <web-view
  7. ref="reflectName2"
  8. content="网页内容....."></web-view>

注①:

JS支持调用的原生模块如下:(另注:插件市场内的插件是否支持web-view调用且看每个插件开发而异。)

  1. //综合模块
  2. let eeui = requireModuleJs("eeui");
  3. //路由模块
  4. let navigator = requireModuleJs("navigator");
  5. //导航标题栏模块
  6. let navigationBar = requireModuleJs("navigationBar");
  7. //浏览器调用方法
  8. let webview = requireModuleJs("webview");
  9. //【插件市场】城市选择器
  10. let citypicker = requireModuleJs("eeui/citypicker");
  11. //【插件市场】图片选择模块
  12. let picture = requireModuleJs("eeui/picture");
  13. //【插件市场】支付模块
  14. let pay = requireModuleJs("eeui/pay");

例如:

  1. let eeui = requireModuleJs("eeui");
  2. eeui.adDialog("http://..../xxx.png", function(res) {
  3. eeui.toast("状态:" + res.status);
  4. });

JS调用原生API示例

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>demo</title>
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
  7. <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  8. <style type="text/css">
  9. .scan {
  10. font-size: 14px;
  11. margin: 32px;
  12. text-align: center;
  13. }
  14. </style>
  15. <script type="text/javascript">
  16. function openScan() {
  17. let eeui = requireModuleJs("eeui");
  18. eeui.openScaner({}, function(res) {
  19. switch (res.status) {
  20. case "success":
  21. eeui.toast("识别成功:" + res.text);
  22. break;
  23. case "failed":
  24. eeui.toast("识别失败");
  25. break;
  26. }
  27. });
  28. }
  29. function $ready() {
  30. //网页加载完成时组件会自动执行此方法
  31. }
  32. </script>
  33. </head>
  34. <body>
  35. <div class="scan" onclick="openScan()">打开扫一扫</div>
  36. </body>
  37. </html>

事件回调 callback

  1. /**
  2. * 组件加载完成
  3. */
  4. @ready = function() { ... }
  5. /**
  6. * 监听状态发生改变
  7. * 返回参数:data = {
  8. status:'success', //状态,注②
  9. title: '网页标题', //仅【status=title】存在
  10. url: 'http://....', //仅【status=url】存在
  11. errCode: '', //仅【status=error】存在
  12. errMsg: '', //仅【status=error】存在
  13. errUrl: '', //仅【status=error】存在
  14. }
  15. */
  16. @stateChanged = function(data) { ... }
  17. /**
  18. * 监听网页高度发生改变
  19. * 返回参数:data = {
  20. height:100, //变化的高度
  21. }
  22. */
  23. @heightChanged = function(data) { ... }
  24. /**
  25. * 监听网页向组件发送消息
  26. * 返回参数:data = {
  27. message:123456, //详细消息
  28. }
  29. */
  30. @receiveMessage = function(data) { ... }

注②:

  • start开始加载
  • success加载完毕
  • error加载错误
  • title标题发生改变
  • url网页地址发生改变

调用方法 methods

  1. /**
  2. * 设置浏览器内容
  3. * 参数一:详细内容
  4. */
  5. this.$refs.reflectName.setContent(string);
  6. /**
  7. * 设置浏览器地址
  8. * 参数一:地址,如:https://eeui.app
  9. */
  10. this.$refs.reflectName.setUrl(url);
  11. /**
  12. * 向浏览器内发送js代码
  13. * 参数一:js代码,如:alert('demo');
  14. */
  15. this.$refs.reflectName.setJavaScript(javascript);
  16. /**
  17. * 是否可以后退
  18. *
  19. * 回调 result: true|false
  20. */
  21. this.$refs.reflectName.canGoBack(callback(result));
  22. /**
  23. * 后退并返回是否后退成功
  24. *
  25. * 回调 result: true|false
  26. */
  27. this.$refs.reflectName.goBack(callback(result));
  28. /**
  29. * 是否可以前进
  30. *
  31. * 回调 result: true|false
  32. */
  33. this.$refs.reflectName.canGoForward(callback(result));
  34. /**
  35. * 前进并返回是否前进成功
  36. *
  37. * 回调 result: true|false
  38. */
  39. this.$refs.reflectName.goForward(callback(result));
  40. /**
  41. * 设置是否显示进度条
  42. * 参数一:true|false
  43. */
  44. this.$refs.reflectName.setProgressbarVisibility(true);
  45. /**
  46. * 设置是否可以滚动
  47. * 参数一:true|false
  48. */
  49. this.$refs.reflectName.setScrollEnabled(true);

浏览器内js调用原生api方法

  1. let webview = requireModuleJs("webview");
  2. /**
  3. * 设置浏览器内容
  4. * 参数一:详细内容
  5. */
  6. webview.setContent(string);
  7. /**
  8. * 设置浏览器地址
  9. * 参数一:地址,如:https://eeui.app
  10. */
  11. webview.setUrl(url);
  12. /**
  13. * 向组件发送信息,组件通过receiveMessage事件获取信息
  14. * 参数一:要发送的数据,如:123456
  15. */
  16. webview.sendMessage(url);
  17. /**
  18. * 是否可以后退
  19. *
  20. * 回调 result: true|false
  21. */
  22. webview.canGoBack(callback(result));
  23. /**
  24. * 后退并返回是否后退成功
  25. *
  26. * 回调 result: true|false
  27. */
  28. webview.goBack(callback(result));
  29. /**
  30. * 是否可以前进
  31. *
  32. * 回调 result: true|false
  33. */
  34. webview.canGoForward(callback(result));
  35. /**
  36. * 前进并返回是否前进成功
  37. *
  38. * 回调 result: true|false
  39. */
  40. webview.goForward(callback(result));
  41. /**
  42. * 设置是否显示进度条
  43. * 参数一:true|false
  44. */
  45. webview.setProgressbarVisibility(true);
  46. /**
  47. * 设置是否可以滚动
  48. * 参数一:true|false
  49. */
  50. webview.setScrollEnabled(true);