Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
m0_68066342
uni-app
提交
c45e8c5d
U
uni-app
项目概览
m0_68066342
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c45e8c5d
编写于
8月 15, 2019
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 解决 Safari 浏览器无法获取网络状态的问题(H5)
上级
0090392e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
29 addition
and
41 deletion
+29
-41
src/platforms/h5/service/api/device/network-info.js
src/platforms/h5/service/api/device/network-info.js
+29
-41
未找到文件。
src/platforms/h5/service/api/device/network-info.js
浏览文件 @
c45e8c5d
const
{
invokeCallbackHandler
:
invoke
const
{
invokeCallbackHandler
:
invoke
}
=
UniServiceJSBridge
const
callbackIds
=
[]
function
_getEffectiveNetworkType
()
{
const
connectionType
=
navigator
.
connection
.
type
let
networkType
=
''
if
(
~
[
'
none
'
,
'
wifi
'
,
'
unknown
'
].
indexOf
(
connectionType
))
{
networkType
=
connectionType
}
else
{
let
effectiveType
=
navigator
.
connection
.
effectiveType
if
(
effectiveType
===
'
slow-2g
'
)
{
effectiveType
=
'
2g
'
}
networkType
=
effectiveType
}
return
networkType
}
function
changeHandler
()
{
let
isConnected
=
true
const
networkType
=
_getEffectiveNetworkType
()
if
(
networkType
===
'
none
'
)
{
isConnected
=
false
}
const
{
networkType
}
=
getNetworkType
()
callbackIds
.
forEach
(
callbackId
=>
{
callbackId
&&
invoke
(
callbackId
,
{
invoke
(
callbackId
,
{
errMsg
:
'
onNetworkStatusChange:ok
'
,
isConnected
:
isConnected
,
networkType
:
networkType
isConnected
:
networkType
!==
'
none
'
,
networkType
})
})
}
export
function
onNetworkStatusChange
(
callbackId
)
{
if
(
window
.
NetworkInformation
)
{
callbackIds
.
push
(
callbackId
)
navigator
.
connection
.
onchange
=
changeHandler
const
connection
=
navigator
.
connection
||
navigator
.
webkitConnection
callbackIds
.
push
(
callbackId
)
if
(
connection
)
{
connection
.
addEventListener
(
'
change
'
,
changeHandler
)
}
else
{
callbackId
&&
invoke
(
callbackId
,
{
errMsg
:
'
onNetworkStatusChange:fail
'
})
window
.
addEventListener
(
'
offline
'
,
changeHandler
)
window
.
addEventListener
(
'
online
'
,
changeHandler
)
}
}
}
export
function
getNetworkType
()
{
if
(
window
.
NetworkInformation
)
{
return
{
errMsg
:
'
getNetworkType:ok
'
,
networkType
:
_getEffectiveNetworkType
()
}
}
else
{
return
{
errMsg
:
'
getNetworkType:fail
'
const
connection
=
navigator
.
connection
||
navigator
.
webkitConnection
let
networkType
=
'
unknown
'
if
(
connection
)
{
networkType
=
connection
.
type
if
(
networkType
===
'
cellular
'
)
{
networkType
=
connection
.
effectiveType
.
replace
(
'
slow-
'
,
''
)
}
else
if
(
!
[
'
none
'
,
'
wifi
'
].
includes
(
networkType
))
{
networkType
=
'
unknown
'
}
}
else
if
(
navigator
.
onLine
===
false
)
{
networkType
=
'
none
'
}
return
{
errMsg
:
'
getNetworkType:ok
'
,
networkType
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录