HTML5+规范:navigator(管理浏览器运行环境信息)
navigator用于管理运行环境信息
1、方法
1.1、checkpermission: 检查运行环境的权限
string plus.navigator.checkpermission( permission );
说明:向检查当前程序的权限状态,不触发权限相对应的功能api的调用。
参数:permission: ( permissionnames) 必选 要检查的权限名称
返回值:string : 可返回以下值: "authorized"表示程序已被用户授权使用此权限; "denied"表示程序已被用户拒绝使用此权限; "undetermined"表示程序未确定是否可使用此权限,此时调用对应的api时系统会弹出提示框让用户确认; "unknown"表示程序未知此权限状态; "unsupported"表示程序不支持此权限。
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } // 检查定位权限 function checkpermissionpos(){ var pp = plus.navigator.checkpermission("location"); switch(pp){ case "authorized": plus.nativeui.alert("已开启定位权限"); break; case "denied": plus.nativeui.alert("已关闭定位权限"); break; case "undetermined": plus.nativeui.alert("未确定定位权限"); break; case "unknown": plus.nativeui.alert("无法查询定位权限"); break; default: plus.nativeui.alert("不支持定位权限"); break; } } </script>检查权限
1.2、closesplashscreen: 关闭程序启动界面
void plus.navigator.closesplashscreen();
说明:很多情况下,程序启动后需要一段时间加载数据,为了避免界面显示空白内容,提高用户体验效果,这时可显示启动界面。 等数据加载完成后再关闭启动界面进入应用,通常可在应用首界面加载数据完成并更新显示内容后调用此方法。 注意:hbuilder7.1版本后启动界面不调用此方法超过6秒后会自动关闭。
返回值:void : 无
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 关闭程序启动界面 plus.navigator.closesplashscreen(); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>关闭程序启动界面
1.3、updatesplashscreen: 更新程序启动界面
void plus.navigator.updatesplashscreen(options);
说明:可设置启动界面显示的图片(仅支持本地文件路径,如果是网络资源可先通过plus.downloader.*下载到本地), 更新启动界面后程序下次启动时生效。
返回值:void : 无
平台支持:android - all (支持),ios - all (不支持)
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } // 更新启动界面 function updatesplash(){ plus.navigator.updatesplashscreen({image:"_www/splash.png"}); } </script>更新程序启动界面
1.4、setsplashscreen:
1.5、createshortcut: 创建应用快捷方式
void plus.navigator.createshortcut( options, successcallback, errorcallback );
说明:在系统桌面创建应用的快捷方式,点击后可直接启动应用。
参数:
options: ( shortcutoptions ) 可选 桌面快捷方式的参数
successcallback: ( shortcutsuccesscallback ) 可选 创建桌面快捷方式成功回调
可通过回调函数参数的sure属性判断创建桌面快捷方式是否确定成功。
errorcallback: ( navigatorerrorcallback ) 可选 创建桌面快捷方式失败回调
返回值:void : 无
平台支持:android - 2.3+ (支持): 注意:需要添加创建快捷方式的权限“
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 创建快捷方式 plus.navigator.createshortcut(); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>创建应用快捷方式
1.6、hasshortcut: 查询是否存在应用快捷方式
void plus.navigator.hasshortcut(options, successcallback);
参数:
options: ( shortcutoptions ) 可选 查询桌面快捷方式的参数
successcallback: ( shortcutsuccesscallback ) 可选 查询桌面快捷方式是否存在回调函数。可通过回调函数参数的result属性判断获取结果: "existing":快捷方式已存在;"none":快捷方式不存在(支持创建);"unsupported":不支持创建桌面快捷方式;"unknown":不确定快捷方式是否存在。
返回值:void : 无
平台支持:android - 2.3+ (支持),ios - all (不支持): ios平台不支持查询桌面快捷方式是否存在。
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } function queryshortcut(){ plus.navigator.hasshortcut({}, function(e){ // 可通过eresult获取结果: // "existing":快捷方式已存在; // "none":快捷方式不存在(支持创建); // "unsupported":不支持创建桌面快捷方式; // "unknown":不确定快捷方式是否存在。 console.log("查询结果:"+e.result); }); } </script>查询是否创建应用快捷方式
1.7、isfullscreen: 判断应用当前是否全屏模式显示
boolean plus.navigator.isfullscreen();
返回值:boolean : 应用全屏模式显示时返回true,否则返回false。
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 是否全屏显示 console.log( plus.navigator.isfullscreen()?"fullscreen!":"not fullscreen!" ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>判断应用当前是否全屏模式显示
1.8、islogs: 判断应用当前是否输出日志
boolean plus.navigator.islogs();
说明:日志包括应用原生层内部跟踪日志(adb、logcat工具可获取的日志)及js层跟踪日志(console.log输出的日志)。 开启日志在一定程度上会降低程序的性能,通常建议在正式发布时关闭日志输出,在调试时开启日志输出(此时可以通过工具adb、logcat获取分析日志)。
返回值:boolean : 应用输出日志时返回true,否则返回false。
平台支持:android - 2.3+ (支持),ios - 7.0+ (不支持): 无日志输出功能。
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 是否开启输出日志 alert( plus.navigator.islogs()?"应用开启输出日志!":"应用关闭输出日志!" ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>判断应用当前是否输出日志
1.9、setfullscreen: 设置应用是否全屏显示
void plus.navigator.setfullscreen( fullscreen );
说明:设置应用在全屏模式显示时,将隐藏系统状态栏,通常游戏类应用才会设置为全屏模式显示。
参数:
fullscreen: ( boolean ) 必选 是否全屏模式显示。true表示全屏模式显示,false表示非全屏模式显示,默认为非全屏模式显示。
返回值:void : 无
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 全屏显示 plus.navigator.setfullscreen( true ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>应用全屏模式显示
1.10、setlogs: 设置应用是否输出日志
void plus.navigator.setlogs( log );
说明:设置应用是否输出日志信息,默认关闭输出日志功能。 日志包括应用原生层内部跟踪日志(adb、logcat工具可获取的日志)及js层跟踪日志(console.log输出的日志)。 开启日志在一定程度上会降低程序的性能,通常建议在正式发布时关闭日志输出,在调试时开启日志输出(此时可以通过工具adb、logcat获取分析日志)。
参数:log: ( boolean ) 必选 是否开启输出日志功能。true表示开启输出日志功能,false表示关闭输出日志功能,默认为关闭输出日志功能。
返回值:void : 无
平台支持:android - 2.3+ (支持),ios - 7.0+ (不支持): 无日志输出功能。
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 开启输出日志 plus.navigator.setlogs( true ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>应用开启输出日志功能
1.11、setstatusbarbackground: 设置系统状态栏背景颜色
void plus.navigator.setstatusbarbackground( rgb );
说明:设置应用在前台运行时系统状态栏的背景颜色,默认使用系统的白色背景。
参数:rgb: ( string ) 必选 背景颜色字符串,格式为#rrggbb
返回值:void : 无
平台支持:android - 2.2+ (不支持): 不支持设置系统状态栏背景颜色。ios - 7.0+ (支持): 需ios7.0及以上版本才支持设置系统状态栏背景颜色。
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 设置系统状态栏背景为红色 plus.navigator.setstatusbarbackground( "#ff0000" ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>设置系统状态栏背景为红色
1.12、getstatusbarbackground: 获取系统状态栏背景颜色
string plus.navigator.getstatusbarbackground();
说明:获取应用在前台运行时系统状态栏的背景颜色。
返回值:string : 系统状态栏的背景颜色,格式为#rrggbb。
平台支持:android - 2.2+ (不支持): 不支持获取系统状态栏背景颜色。ios - 7.0+ (支持): 需ios7.0及以上版本才能获取的正确的系统状态栏背景颜色。
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 获取系统状态栏背景 var rgb = plus.navigator.getstatusbarbackground(); console.log( "statusbarbackground: "+rgb ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>获取系统状态栏背景
1.13、setstatusbarstyle: 设置系统状态栏样式
void plus.navigator.setstatusbarstyle( style );
说明:设置应用在前台运行时系统状态栏的样式,此操作是应用全局配置,webview窗口关闭后仍然生效,默认值可在manifest.json中配置。
参数:style: ( string ) 必选 背景颜色字符串,格式为#rrggbb,可取值: "uistatusbarstyledefault":ios6及以下系统状态栏为黑底白字,ios7及以上系统用于定义系统状态栏上文字颜色为黑字(适用于浅色背景); "uistatusbarstyleblackopaque":深色背景色样式,ios6及以下系统状态栏为黑底白字,ios7及以上系统用于定义系统状态栏上文字颜色为白色(适用于深色背景); "uistatusbarstyleblacktranslucent":ios6及以下系统在启动界面为灰底白字,ios7及以上系统与uistatusbarstyleblackopaque效果一样。
返回值:void : 无
平台支持:android - 2.2+ (不支持): 不支持设置系统状态栏样式。ios - 7.0+ (支持)
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 设置系统状态栏样式为浅色文字 plus.navigator.setstatusbarstyle( "uistatusbarstyleblackopaque" ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>设置系统状态栏样式为浅色(白色)文字
1.14、getstatusbarstyle: 获取系统状态栏样式
string plus.navigator.getstatusbarstyle();
说明:获取应用在前台运行时系统状态栏的样式。
返回值:string : 系统状态栏的背景样式,可取值: "uistatusbarstyledefault":ios6及以下系统状态栏为黑底白字,ios7及以上系统用于定义系统状态栏上文字颜色为黑字(适用于浅色背景); "uistatusbarstyleblackopaque":深色背景色样式,ios6及以下系统状态栏为黑底白字,ios7及以上系统用于定义系统状态栏上文字颜色为白色(适用于深色背景); "uistatusbarstyleblacktranslucent":ios6及以下系统在启动界面为灰底白字,ios7及以上系统不会返回此值。
平台支持:android - 2.2+ (不支持): 不支持获取系统状态栏样式。ios - 7.0+ (支持)
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 获取系统状态栏样式 var ss = plus.navigator.getstatusbarstyle(); console.log( "statusbar style: "+ss ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>获取系统状态栏样式
1.15、getstatusbarheight: 获取系统状态栏高度
number plus.navigator.getstatusbarheight();
说明:单位为像素(px),值为webview中的逻辑高度单位,如果要获取真实高度则必须乘以plus.screen.scale。
返回值:number : 系统状态栏的高度值。
平台支持:android - 2.3+ (支持),ios - 5.1+ (支持)
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 获取系统状态栏高度 var lh = plus.navigator.getstatusbarheight(); console.log( "statusbar height: "+lh*plus.screen.scale ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>获取系统状态栏高度
1.16、isimmersedstatusbar: 判断当前是否为沉浸式状态栏模式
boolean plus.navigator.isimmersedstatusbar();
说明:如果当前应用采用沉浸式状态栏则返回true,否则返回false。 注意:如果当前系统版本不支持沉浸式状态栏也返回false。
返回值:boolean : 是否为沉浸式状态栏模式。
平台支持:android - 2.3+ (支持),ios - 5.1+ (支持)
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 获取是否为沉浸式状态栏模式 var bi = plus.navigator.isimmersedstatusbar(); console.log( "immersed statusbar: "+bi?"yes":"no" ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>当前是否为沉浸式状态栏模式
1.17、setuseragent: 设置useragent值
void plus.navigator.setuseragent( useragent, checkplus );
说明:设置应用通过navigator.useragent获取的值,及所有发起http请求时提交的useragent值。 如果要设置启动页面的useragent值则需要在manifest.json中进行配置。
参数:
useragent: ( string ) 必选 要设置的新的useragent值
checkplus: ( boolean ) 可选 是否检测useragent中自动添加“html5plus”标识
布尔类型,true表示检测并自动添加“html5plus”标识,false则不检测,默认值为true。 html5plus标识格式为html5plus/%version%,%version%为版本号,目前为1.0,如" html5plus/1.0"。
返回值:void : 无
平台支持:android - 2.2+ (支持): 调用此方法不能更新已经创建好的webview窗口的useragent,在此之后创建的webview窗口将使用新设置的useragent值。 同时调用此方法的webview窗口也能及时更新useragent值。ios - 4.5+ (支持): 调用此方法不能更新已经创建好的webview窗口的useragent,在此之后创建的webview窗口将使用新设置的useragent值。 调用此方法的webview窗口同样不能更新useragent值。
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 设置useragent plus.navigator.setuseragent( "application/helloworld" ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>设置useragent为“application/helloworld”
1.18、getuseragent: 获取useragent值
string plus.navigator.getuseragent();
返回值:string : 应用的useragent值
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } // 获取应用的useragent function appuseragent(){ alert( plus.navigator.getuseragent() ); } </script>获取useragent值
1.19、setcookie: 设置cookie值
void plus.navigator.setcookie( url, value );
说明:设置应用发起http请求时提交的cookie值,调用此接口后所有的请求都生效。
参数:
url: ( string ) 必选 要设置的cookie所属的网络地址
value: ( string ) 必选 要设置的cookie值,cookie值的格式必需符合rfc2109中定义的set-cookie响应数据格式,如“test=123; expires=friday,24-jan-2014 16:24:36 gmt; path=/”。
返回值:void : 无
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ // 设置cookie plus.navigator.setcookie( "https://www.dcloud.io/", "test=123; expires=friday,24-jan-2015 16:24:36 gmt; path=/" ); } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } </script>设置cookie
1.20、getcookie: 获取cookie值
string plus.navigator.getcookie( url );
参数:url: ( string ) 必选 要获取的cookie所属的网络地址
返回值:string : cookie值
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } // 获取cookie function getcookie(){ alert( plus.navigator.getcookie('https://www.dcloud.io/') ); } </script>获取cookie值
1.21、removeallcookie: 删除应用所有cookie值
void plus.navigator.removeallcookie();
返回值:void : 无
平台支持:android - 2.2+ (支持),ios - 4.5+ (支持)
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } // 清除应用的所有cookie function clearcookie(){ plus.navigator.removeallcookie(); } </script>删除应用所有cookie值
1.22、removecookie: 删除应用cookie
void plus.navigator.removecookie( url );
参数:url: ( string ) 必选 要删除cookie所属的网络地址
返回值:void : 无
平台支持:android - 2.2+ (不支持): 不支持删除指定网络地址的cookie值。ios - 4.5+ (支持)
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } // 删除应用的cookie function removecookie(){ plus.navigator.removecookie( "https://www.dcloud.io/" ); } </script>删除应用cookie
1.23、removesessioncookie: 删除应用所有会话期cookie值
void plus.navigator.removesessioncookie();
返回值:void : 无
平台支持:android - 2.2+ (支持),ios - 4.5+ (支持)
示例:
<script type="text/javascript"> // h5 plus事件处理 function plusready(){ } if(window.plus){ plusready(); }else{ document.addeventlistener("plusready",plusready,false); } // 清除应用的所有会话期cookie function clearcookie(){ plus.navigator.removesessioncookie(); } </script>删除应用所有会话期cookie值
2、对象
2.2、shortcutoptions: json对象,创建应用快捷方式要设置的参数
属性:
(1)、name: (string 类型 )快捷方式名称。如果未设置则使用应用的名称,manifest.json中name属性值。
(2)、icon: (string 类型 )快捷方式的图标。如果未设置则优先使用应用中指定的图标(manifest.json中icon节点下对应分辨率的图标),如未区配则使用应用的图标(仅在独立打包时),否则使用runtime提供的默认图标。
(3)、toast: (string 类型 )创建快捷方式后的提示信息。快捷方式创建成功后显示,默认提示内容为“"xxxx"已创建桌面快捷方式”,其中"xxxx"为程序的名称,如果不需要提示则设置此值为空字符串。
(4)、extra: (json 类型 )快捷方式的扩展参数。其中key和value值都必须是字符串类型。
(5)、classname: (string 类型 )要启动activity类名。通常情况下不需要指定此值,仅在5+sdk集成时自定义activity才用到。
(6)、force: (boolean 类型 )是否需要强制创建快捷方式。true表示强制创建,false表示不强制创建,默认值为true。 强制创建可能会导致在无法判断快捷方式是否存在的设备上重复创建,如果需要尽可能避免出现重复创建桌面快捷方式则应该设置force属性值为false。
2.3、permissionnames: 运行环境权限类型
常量:
(1)、camera: (string 类型 )访问摄像头权限。用于调用摄像头(plus.camera.*/plus.barcode.*)。
(2)、contacts: (string 类型 )访问系统联系*限。用于访问(读&写)系统通讯录(plus.gallery.*)。
(3)、gallery: (string 类型 )访问系统相册权限。用于访问(读&写)系统相册(plus.gallery.*)。
(4)、location: (string 类型 )定位权限。用于获取当前用户位置信息(plus.geolocation.*)。
(5)、notifition: (string 类型 )消息通知权限。用于接收系统消息通知(plus.push.*)。平台支持android - all (不支持),ios - all (支持)
(6)、record: (string 类型 )录音权限。用于进行本地录音操作(plus.audio.audiorecorder)。
(7)、shortcut: (string 类型 )创建桌面快捷方式权限。用于在系统桌面创建快捷方式图标(plus.navigator.createshortcut)。平台支持android - all (支持): 在不同的rom上存在差异,如果运行环境不支持此权限功能则返回“unsupported”。ios - all (不支持): 系统未开放桌面快捷方式权限,可通过plus.navigator.createshortcut切换到safari引导用户将网址“添加到主屏幕”,然后通过url sheme启动应用。 ios平台总是返回“unsupported”。
3、回调方法
3.1、shortcutsuccesscallback: 创建桌面快捷方式成功的回调函数
void onsuccess( event event ){
var result=event.result; // 快捷方式是否已经存在,调用plus.navigator.hasshortcut方法时有效
var sure=event.sure; // 是否确定创建桌面快捷方式成功,调用plus.navigator.createshortcut方法时有效
}
参数:
event: ( event ) 必选 创建桌面快捷方式返回的数据,此对象包含以下属性值: event.result - 查询快捷方式是否存在的结果(plus.navigator.hasshortcut),可取值: existing",快捷方式已存在; "none",快捷方式不存在(支持创建); "unsupported",不支持创建桌面快捷方式; "unknown":不确定快捷方式是否存在。 event.sure - 创建快捷方式的结果(plus.navigator.hasshortcut),boolean类型,可取值: true,表示在当前环境下确定快捷方式创建成功; false,表示不确定快捷方式是否已创建。
返回值:void : 无
平台支持:android - all (支持),ios - 4.3+ (支持): 仅在流应用环境下支持创建桌面快捷方式,在5+ app环境不支持此功能。
3.2、navigatorerrorcallback: 操作错误回调函数接口
function void onerror( exception error ) {
// error.
var code = error.code; // 错误编码
var message = error.message; // 错误描述信息
}
参数:
error: ( exception ) 必选 操作失败信息,可通过error.code(number类型)获取错误编码; 可通过error.message(string类型)获取错误描述信息。
返回值:void : 无