Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qianlong66
uni-app
提交
e5637911
U
uni-app
项目概览
qianlong66
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
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,发现更多精彩内容 >>
提交
e5637911
编写于
7月 19, 2021
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(App): chooseLocation、openLocation
上级
117d73a2
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
647 addition
and
142 deletion
+647
-142
packages/uni-app-plus/dist/uni-app-service.es.js
packages/uni-app-plus/dist/uni-app-service.es.js
+320
-91
packages/uni-app-plus/dist/uni-app-view.umd.js
packages/uni-app-plus/dist/uni-app-view.umd.js
+34
-34
packages/uni-app-plus/src/service/api/index.ts
packages/uni-app-plus/src/service/api/index.ts
+2
-0
packages/uni-app-plus/src/service/api/location/chooseLocation.ts
...s/uni-app-plus/src/service/api/location/chooseLocation.ts
+73
-0
packages/uni-app-plus/src/service/api/location/openLocation.ts
...ges/uni-app-plus/src/service/api/location/openLocation.ts
+31
-0
packages/uni-app-plus/src/service/api/page.ts
packages/uni-app-plus/src/service/api/page.ts
+170
-0
packages/uni-h5/dist/uni-h5.es.js
packages/uni-h5/dist/uni-h5.es.js
+17
-17
未找到文件。
packages/uni-app-plus/dist/uni-app-service.es.js
浏览文件 @
e5637911
...
...
@@ -9,79 +9,79 @@ const __uniRoutes = instanceContext.__uniRoutes;
var serviceContext = (function (vue) {
'use strict';
/*
* base64-arraybuffer
* https://github.com/niklasvh/base64-arraybuffer
*
* Copyright (c) 2012 Niklas von Hertzen
* Licensed under the MIT license.
*/
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
// Use a lookup table to find the index.
var lookup = /*#__PURE__*/ (function () {
const lookup = new Uint8Array(256);
for (var i = 0; i < chars.length; i++) {
lookup[chars.charCodeAt(i)] = i;
}
return lookup
})();
function encode$3(arraybuffer) {
var bytes = new Uint8Array(arraybuffer),
i,
len = bytes.length,
base64 = '';
for (i = 0; i < len; i += 3) {
base64 += chars[bytes[i] >> 2];
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
base64 += chars[bytes[i + 2] & 63];
}
if (len % 3 === 2) {
base64 = base64.substring(0, base64.length - 1) + '=';
} else if (len % 3 === 1) {
base64 = base64.substring(0, base64.length - 2) + '==';
}
return base64
}
function decode$1(base64) {
var bufferLength = base64.length * 0.75,
len = base64.length,
i,
p = 0,
encoded1,
encoded2,
encoded3,
encoded4;
if (base64[base64.length - 1] === '=') {
bufferLength--;
if (base64[base64.length - 2] === '=') {
bufferLength--;
}
}
var arraybuffer = new ArrayBuffer(bufferLength),
bytes = new Uint8Array(arraybuffer);
for (i = 0; i < len; i += 4) {
encoded1 = lookup[base64.charCodeAt(i)];
encoded2 = lookup[base64.charCodeAt(i + 1)];
encoded3 = lookup[base64.charCodeAt(i + 2)];
encoded4 = lookup[base64.charCodeAt(i + 3)];
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
}
return arraybuffer
/*
* base64-arraybuffer
* https://github.com/niklasvh/base64-arraybuffer
*
* Copyright (c) 2012 Niklas von Hertzen
* Licensed under the MIT license.
*/
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
// Use a lookup table to find the index.
var lookup = /*#__PURE__*/ (function () {
const lookup = new Uint8Array(256);
for (var i = 0; i < chars.length; i++) {
lookup[chars.charCodeAt(i)] = i;
}
return lookup
})();
function encode$3(arraybuffer) {
var bytes = new Uint8Array(arraybuffer),
i,
len = bytes.length,
base64 = '';
for (i = 0; i < len; i += 3) {
base64 += chars[bytes[i] >> 2];
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
base64 += chars[bytes[i + 2] & 63];
}
if (len % 3 === 2) {
base64 = base64.substring(0, base64.length - 1) + '=';
} else if (len % 3 === 1) {
base64 = base64.substring(0, base64.length - 2) + '==';
}
return base64
}
function decode$1(base64) {
var bufferLength = base64.length * 0.75,
len = base64.length,
i,
p = 0,
encoded1,
encoded2,
encoded3,
encoded4;
if (base64[base64.length - 1] === '=') {
bufferLength--;
if (base64[base64.length - 2] === '=') {
bufferLength--;
}
}
var arraybuffer = new ArrayBuffer(bufferLength),
bytes = new Uint8Array(arraybuffer);
for (i = 0; i < len; i += 4) {
encoded1 = lookup[base64.charCodeAt(i)];
encoded2 = lookup[base64.charCodeAt(i + 1)];
encoded3 = lookup[base64.charCodeAt(i + 2)];
encoded4 = lookup[base64.charCodeAt(i + 3)];
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
}
return arraybuffer
}
/**
...
...
@@ -1747,15 +1747,15 @@ var serviceContext = (function (vue) {
}
}
const callbacks$
2
= {};
const callbacks$
3
= {};
function createCallbacks(namespace) {
let scopedCallbacks = callbacks$
2
[namespace];
let scopedCallbacks = callbacks$
3
[namespace];
if (!scopedCallbacks) {
scopedCallbacks = {
id: 1,
callbacks: Object.create(null),
};
callbacks$
2
[namespace] = scopedCallbacks;
callbacks$
3
[namespace] = scopedCallbacks;
}
return {
get(id) {
...
...
@@ -4016,6 +4016,13 @@ var serviceContext = (function (vue) {
const API_HIDE_KEYBOARD = 'hideKeyboard';
const API_SHOW_KEYBOARD = 'showKeyboard';
const API_CHOOSE_LOCATION = 'chooseLocation';
const ChooseLocationProtocol = {
keyword: String,
latitude: Number,
longitude: Number,
};
const API_GET_LOCATION = 'getLocation';
const coordTypes = ['WGS84', 'GCJ02'];
const GetLocationOptions = {
...
...
@@ -4039,6 +4046,29 @@ var serviceContext = (function (vue) {
altitude: Boolean,
};
const API_OPEN_LOCATION = 'openLocation';
const OpenLocationOptions = {
formatArgs: {
scale(value, params) {
value = Math.floor(value);
params.scale = value >= 5 && value <= 18 ? value : 18;
},
},
};
const OpenLocationProtocol = {
latitude: {
type: Number,
required: true,
},
longitude: {
type: Number,
required: true,
},
scale: Number,
name: String,
address: String,
};
const API_CHOOSE_IMAGE = 'chooseImage';
const ChooseImageOptions = {
formatArgs: {
...
...
@@ -5801,7 +5831,7 @@ var serviceContext = (function (vue) {
}
},
};
const callbacks$
1
= {
const callbacks$
2
= {
pause: null,
resume: null,
start: null,
...
...
@@ -5812,29 +5842,29 @@ var serviceContext = (function (vue) {
const state = res.state;
delete res.state;
delete res.errMsg;
if (state && typeof callbacks$
1
[state] === 'function') {
callbacks$
1
[state](res);
if (state && typeof callbacks$
2
[state] === 'function') {
callbacks$
2
[state](res);
}
}
class RecorderManager {
constructor() { }
onError(callback) {
callbacks$
1
.error = callback;
callbacks$
2
.error = callback;
}
onFrameRecorded(callback) { }
onInterruptionBegin(callback) { }
onInterruptionEnd(callback) { }
onPause(callback) {
callbacks$
1
.pause = callback;
callbacks$
2
.pause = callback;
}
onResume(callback) {
callbacks$
1
.resume = callback;
callbacks$
2
.resume = callback;
}
onStart(callback) {
callbacks$
1
.start = callback;
callbacks$
2
.start = callback;
}
onStop(callback) {
callbacks$
1
.stop = callback;
callbacks$
2
.stop = callback;
}
pause() {
Recorder.pause();
...
...
@@ -6365,7 +6395,7 @@ var serviceContext = (function (vue) {
const socketTasks = [];
const socketsMap = {};
const globalEvent = {
const globalEvent
$1
= {
open: '',
close: '',
error: '',
...
...
@@ -6467,8 +6497,8 @@ var serviceContext = (function (vue) {
}
socketStateChange(name, res = {}) {
const data = name === 'message' ? res : {};
if (this === socketTasks[0] && globalEvent[name]) {
UniServiceJSBridge.invokeOnCallback(globalEvent[name], data);
if (this === socketTasks[0] && globalEvent
$1
[name]) {
UniServiceJSBridge.invokeOnCallback(globalEvent
$1
[name], data);
}
// WYQ fix: App平台修复websocket onOpen时发送数据报错的Bug
this._callbacks[name].forEach((callback) => {
...
...
@@ -6567,7 +6597,7 @@ var serviceContext = (function (vue) {
function on(event) {
const api = `onSocket${capitalize(event)}`;
return defineOnApi(api, () => {
globalEvent[event] = api;
globalEvent
$1
[event] = api;
});
}
const onSocketOpen = /*#__PURE__*/ on('open');
...
...
@@ -6949,7 +6979,7 @@ var serviceContext = (function (vue) {
'error',
'waiting',
];
const callbacks = {
const callbacks
$1
= {
canplay: [],
play: [],
pause: [],
...
...
@@ -7128,7 +7158,7 @@ var serviceContext = (function (vue) {
});
}
function onBackgroundAudioStateChange({ state, errMsg, errCode, dataUrl, }) {
callbacks[state].forEach((callback) => {
callbacks
$1
[state].forEach((callback) => {
if (typeof callback === 'function') {
callback(state === 'error'
? {
...
...
@@ -7143,7 +7173,7 @@ var serviceContext = (function (vue) {
eventNames.forEach((item) => {
BackgroundAudioManager.prototype[`on${capitalize(item)}`] =
function (callback) {
callbacks[item].push(callback);
callbacks
$1
[item].push(callback);
};
});
});
...
...
@@ -7369,6 +7399,203 @@ var serviceContext = (function (vue) {
});
}, GetLocationProtocol, GetLocationOptions);
let plus_;
let weex_;
let BroadcastChannel_;
function getRuntime() {
return typeof window === 'object' &&
typeof navigator === 'object' &&
typeof document === 'object'
? 'webview'
: 'v8';
}
function getPageId() {
return plus_.webview.currentWebview().id;
}
let channel;
let globalEvent;
const callbacks = {};
function onPlusMessage$1(res) {
const message = res.data && res.data.__message;
if (!message || !message.__page) {
return;
}
const pageId = message.__page;
const callback = callbacks[pageId];
callback && callback(message);
if (!message.keep) {
delete callbacks[pageId];
}
}
function addEventListener(pageId, callback) {
if (getRuntime() === 'v8') {
if (BroadcastChannel_) {
channel && channel.close();
channel = new BroadcastChannel_(getPageId());
channel.onmessage = onPlusMessage$1;
}
else if (!globalEvent) {
globalEvent = weex_.requireModule('globalEvent');
globalEvent.addEventListener('plusMessage', onPlusMessage$1);
}
}
else {
// @ts-ignore
window.__plusMessage = onPlusMessage$1;
}
callbacks[pageId] = callback;
}
class Page {
constructor(webview) {
this.webview = webview;
}
sendMessage(data) {
const message = {
__message: {
data,
},
};
const id = this.webview.id;
if (BroadcastChannel_) {
const channel = new BroadcastChannel_(id);
channel.postMessage(message);
}
else {
plus_.webview.postMessageToUniNView &&
plus_.webview.postMessageToUniNView(message, id);
}
}
close() {
this.webview.close();
}
}
function showPage({ context = {}, url, data = {}, style = {}, onMessage, onClose, }) {
// eslint-disable-next-line
plus_ = context.plus || plus;
// eslint-disable-next-line
weex_ = context.weex || (typeof weex === 'object' ? weex : null);
// eslint-disable-next-line
BroadcastChannel_ =
context.BroadcastChannel ||
(typeof BroadcastChannel === 'object' ? BroadcastChannel : null);
const titleNView = {
autoBackButton: true,
titleSize: '17px',
};
const pageId = `page${Date.now()}`;
style = Object.assign({}, style);
if (style.titleNView !== false && style.titleNView !== 'none') {
style.titleNView = Object.assign(titleNView, style.titleNView);
}
const defaultStyle = {
top: 0,
bottom: 0,
usingComponents: {},
popGesture: 'close',
scrollIndicator: 'none',
animationType: 'pop-in',
animationDuration: 200,
uniNView: {
path: `${(typeof process === 'object' &&
process.env &&
process.env.VUE_APP_TEMPLATE_PATH) ||
''}/${url}.js`,
defaultFontSize: plus_.screen.resolutionWidth / 20,
viewport: plus_.screen.resolutionWidth,
},
};
style = Object.assign(defaultStyle, style);
const page = plus_.webview.create('', pageId, style, {
extras: {
from: getPageId(),
runtime: getRuntime(),
data,
useGlobalEvent: !BroadcastChannel_,
},
});
page.addEventListener('close', onClose);
addEventListener(pageId, (message) => {
if (typeof onMessage === 'function') {
onMessage(message.data);
}
if (!message.keep) {
page.close('auto');
}
});
page.show(style.animationType, style.animationDuration);
return new Page(page);
}
function getStatusBarStyle() {
let style = plus.navigator.getStatusBarStyle();
if (style === 'UIStatusBarStyleBlackTranslucent' ||
style === 'UIStatusBarStyleBlackOpaque' ||
style === 'null') {
style = 'light';
}
else if (style === 'UIStatusBarStyleDefault') {
style = 'dark';
}
return style;
}
const chooseLocation = defineAsyncApi(API_CHOOSE_LOCATION, (options, { resolve, reject }) => {
const statusBarStyle = getStatusBarStyle();
const isDark = statusBarStyle !== 'light';
let result;
const page = showPage({
url: '__uniappchooselocation',
data: options,
style: {
// @ts-ignore
animationType: options.animationType || 'slide-in-bottom',
// @ts-ignore
titleNView: false,
popGesture: 'close',
scrollIndicator: 'none',
},
onMessage({ event, detail, }) {
if (event === 'selected') {
result = detail;
}
},
onClose() {
if (isDark) {
plus.navigator.setStatusBarStyle('dark');
}
result ? resolve(result) : reject('cancel');
},
});
if (isDark) {
plus.navigator.setStatusBarStyle('light');
page.webview.addEventListener('popGesture', ({ type, result }) => {
if (type === 'start') {
plus.navigator.setStatusBarStyle('dark');
}
else if (type === 'end' && !result) {
plus.navigator.setStatusBarStyle('light');
}
});
}
}, ChooseLocationProtocol);
const openLocation = defineAsyncApi(API_OPEN_LOCATION, (data, { resolve, reject }) => {
showPage({
url: '__uniappopenlocation',
data,
style: {
titleNView: {
type: 'transparent',
},
popGesture: 'close',
backButtonAutoControl: 'close',
},
onClose() {
reject('cancel');
},
});
return resolve();
}, OpenLocationProtocol, OpenLocationOptions);
const showModal = defineAsyncApi(API_SHOW_MODAL, ({ title = '', content = '', showCancel = true, cancelText, cancelColor, confirmText, confirmColor, } = {}, { resolve }) => {
content = content || ' ';
plus.nativeUI.confirm(content, (e) => {
...
...
@@ -10031,6 +10258,8 @@ var serviceContext = (function (vue) {
createInnerAudioContext: createInnerAudioContext,
getBackgroundAudioManager: getBackgroundAudioManager,
getLocation: getLocation,
chooseLocation: chooseLocation,
openLocation: openLocation,
showModal: showModal,
showActionSheet: showActionSheet,
showLoading: showLoading,
...
...
packages/uni-app-plus/dist/uni-app-view.umd.js
浏览文件 @
e5637911
此差异已折叠。
点击以展开。
packages/uni-app-plus/src/service/api/index.ts
浏览文件 @
e5637911
...
...
@@ -35,6 +35,8 @@ export * from './context/createInnerAudioContext'
export
*
from
'
./context/getBackgroundAudioManager
'
export
*
from
'
./location/getLocation
'
export
*
from
'
./location/chooseLocation
'
export
*
from
'
./location/openLocation
'
export
*
from
'
./ui/popup/showModal
'
export
*
from
'
./ui/popup/showActionSheet
'
...
...
packages/uni-app-plus/src/service/api/location/chooseLocation.ts
0 → 100644
浏览文件 @
e5637911
import
{
API_CHOOSE_LOCATION
,
API_TYPE_CHOOSE_LOCATION
,
defineAsyncApi
,
ChooseLocationProtocol
,
}
from
'
@dcloudio/uni-api
'
import
{
showPage
}
from
'
../page
'
function
getStatusBarStyle
()
{
let
style
=
plus
.
navigator
.
getStatusBarStyle
()
if
(
style
===
'
UIStatusBarStyleBlackTranslucent
'
||
style
===
'
UIStatusBarStyleBlackOpaque
'
||
style
===
'
null
'
)
{
style
=
'
light
'
}
else
if
(
style
===
'
UIStatusBarStyleDefault
'
)
{
style
=
'
dark
'
}
return
style
}
export
const
chooseLocation
=
<
API_TYPE_CHOOSE_LOCATION
>
defineAsyncApi
(
API_CHOOSE_LOCATION
,
(
options
,
{
resolve
,
reject
})
=>
{
const
statusBarStyle
=
getStatusBarStyle
()
const
isDark
=
statusBarStyle
!==
'
light
'
let
result
:
undefined
|
UniApp
.
ChooseLocationSuccess
const
page
=
showPage
({
url
:
'
__uniappchooselocation
'
,
data
:
options
,
style
:
{
// @ts-ignore
animationType
:
options
.
animationType
||
'
slide-in-bottom
'
,
// @ts-ignore
titleNView
:
false
,
popGesture
:
'
close
'
,
scrollIndicator
:
'
none
'
,
},
onMessage
({
event
,
detail
,
}:
{
event
:
string
detail
:
UniApp
.
ChooseLocationSuccess
})
{
if
(
event
===
'
selected
'
)
{
result
=
detail
}
},
onClose
()
{
if
(
isDark
)
{
plus
.
navigator
.
setStatusBarStyle
(
'
dark
'
)
}
result
?
resolve
(
result
)
:
reject
(
'
cancel
'
)
},
})
if
(
isDark
)
{
plus
.
navigator
.
setStatusBarStyle
(
'
light
'
)
page
.
webview
.
addEventListener
(
'
popGesture
'
,
({
type
,
result
})
=>
{
if
(
type
===
'
start
'
)
{
plus
.
navigator
.
setStatusBarStyle
(
'
dark
'
)
}
else
if
(
type
===
'
end
'
&&
!
result
)
{
plus
.
navigator
.
setStatusBarStyle
(
'
light
'
)
}
})
}
},
ChooseLocationProtocol
)
packages/uni-app-plus/src/service/api/location/openLocation.ts
0 → 100644
浏览文件 @
e5637911
import
{
API_OPEN_LOCATION
,
API_TYPE_OPEN_LOCATION
,
defineAsyncApi
,
OpenLocationProtocol
,
OpenLocationOptions
,
}
from
'
@dcloudio/uni-api
'
import
{
showPage
}
from
'
../page.js
'
export
const
openLocation
=
<
API_TYPE_OPEN_LOCATION
>
defineAsyncApi
(
API_OPEN_LOCATION
,
(
data
,
{
resolve
,
reject
})
=>
{
showPage
({
url
:
'
__uniappopenlocation
'
,
data
,
style
:
{
titleNView
:
{
type
:
'
transparent
'
,
},
popGesture
:
'
close
'
,
backButtonAutoControl
:
'
close
'
,
},
onClose
()
{
reject
(
'
cancel
'
)
},
})
return
resolve
()
},
OpenLocationProtocol
,
OpenLocationOptions
)
packages/uni-app-plus/src/service/api/page.ts
0 → 100644
浏览文件 @
e5637911
declare
interface
BroadcastChannel
{
new
(
id
:
string
):
BroadcastChannel
name
:
string
postMessage
:
(
message
:
any
)
=>
void
onmessage
:
(
event
:
{
type
:
string
;
data
:
any
})
=>
void
close
:
()
=>
void
}
let
plus_
:
Plus
&
{
webview
:
{
postMessageToUniNView
?:
Function
}
}
let
weex_
:
any
let
BroadcastChannel_
:
BroadcastChannel
function
getRuntime
()
{
return
typeof
window
===
'
object
'
&&
typeof
navigator
===
'
object
'
&&
typeof
document
===
'
object
'
?
'
webview
'
:
'
v8
'
}
function
getPageId
()
{
return
plus_
.
webview
.
currentWebview
().
id
}
let
channel
:
BroadcastChannel
let
globalEvent
:
any
const
callbacks
:
Record
<
string
,
CallBack
>
=
{}
type
CallBack
=
(
result
:
any
)
=>
void
function
onPlusMessage
(
res
:
{
data
?:
{
__message
:
{
__page
:
string
;
keep
:
boolean
}
}
})
{
const
message
=
res
.
data
&&
res
.
data
.
__message
if
(
!
message
||
!
message
.
__page
)
{
return
}
const
pageId
=
message
.
__page
const
callback
=
callbacks
[
pageId
]
callback
&&
callback
(
message
)
if
(
!
message
.
keep
)
{
delete
callbacks
[
pageId
]
}
}
function
addEventListener
(
pageId
:
string
,
callback
:
CallBack
)
{
if
(
getRuntime
()
===
'
v8
'
)
{
if
(
BroadcastChannel_
)
{
channel
&&
channel
.
close
()
channel
=
new
BroadcastChannel_
(
getPageId
())
channel
.
onmessage
=
onPlusMessage
}
else
if
(
!
globalEvent
)
{
globalEvent
=
weex_
.
requireModule
(
'
globalEvent
'
)
globalEvent
.
addEventListener
(
'
plusMessage
'
,
onPlusMessage
)
}
}
else
{
// @ts-ignore
window
.
__plusMessage
=
onPlusMessage
}
callbacks
[
pageId
]
=
callback
}
class
Page
{
webview
:
PlusWebviewWebviewObject
constructor
(
webview
:
PlusWebviewWebviewObject
)
{
this
.
webview
=
webview
}
sendMessage
(
data
:
any
)
{
const
message
=
{
__message
:
{
data
,
},
}
const
id
=
this
.
webview
.
id
if
(
BroadcastChannel_
)
{
const
channel
=
new
BroadcastChannel_
(
id
)
channel
.
postMessage
(
message
)
}
else
{
plus_
.
webview
.
postMessageToUniNView
&&
plus_
.
webview
.
postMessageToUniNView
(
message
,
id
)
}
}
close
()
{
this
.
webview
.
close
()
}
}
type
PageShow
=
Parameters
<
PlusWebviewWebviewObject
[
'
show
'
]
>
type
ShowPage
=
{
context
?:
{
plus
?:
Plus
;
weex
?:
any
;
BroadcastChannel
?:
any
}
url
:
string
data
:
any
style
?:
PlusWebviewWebviewStyles
&
{
animationType
?:
PageShow
[
0
]
animationDuration
?:
PageShow
[
1
]
}
onMessage
?:
CallBack
onClose
:
CallBack
}
export
function
showPage
({
context
=
{},
url
,
data
=
{},
style
=
{},
onMessage
,
onClose
,
}:
ShowPage
)
{
// eslint-disable-next-line
plus_
=
context
.
plus
||
plus
// eslint-disable-next-line
weex_
=
context
.
weex
||
(
typeof
weex
===
'
object
'
?
weex
:
null
)
// eslint-disable-next-line
BroadcastChannel_
=
context
.
BroadcastChannel
||
(
typeof
BroadcastChannel
===
'
object
'
?
BroadcastChannel
:
null
)
const
titleNView
=
{
autoBackButton
:
true
,
titleSize
:
'
17px
'
,
}
const
pageId
=
`page
${
Date
.
now
()}
`
style
=
Object
.
assign
({},
style
)
if
(
style
.
titleNView
!==
false
&&
style
.
titleNView
!==
'
none
'
)
{
style
.
titleNView
=
Object
.
assign
(
titleNView
,
style
.
titleNView
)
}
const
defaultStyle
=
{
top
:
0
,
bottom
:
0
,
usingComponents
:
{},
popGesture
:
'
close
'
,
scrollIndicator
:
'
none
'
,
animationType
:
'
pop-in
'
,
animationDuration
:
200
,
uniNView
:
{
path
:
`
${
(
typeof
process
===
'
object
'
&&
process
.
env
&&
process
.
env
.
VUE_APP_TEMPLATE_PATH
)
||
''
}
/
${
url
}
.js`
,
defaultFontSize
:
plus_
.
screen
.
resolutionWidth
!
/ 20
,
viewport
:
plus_
.
screen
.
resolutionWidth
,
},
}
style
=
Object
.
assign
(
defaultStyle
,
style
)
const
page
=
plus_
.
webview
.
create
(
''
,
pageId
,
style
,
{
extras
:
{
from
:
getPageId
(),
runtime
:
getRuntime
(),
data
,
useGlobalEvent
:
!
BroadcastChannel_
,
},
})
page
.
addEventListener
(
'
close
'
,
onClose
)
addEventListener
(
pageId
,
(
message
)
=>
{
if
(
typeof
onMessage
===
'
function
'
)
{
onMessage
(
message
.
data
)
}
if
(
!
message
.
keep
)
{
page
.
close
(
'
auto
'
)
}
})
page
.
show
(
style
.
animationType
,
style
.
animationDuration
)
return
new
Page
(
page
)
}
packages/uni-h5/dist/uni-h5.es.js
浏览文件 @
e5637911
...
...
@@ -737,7 +737,7 @@ var safeAreaInsets = {
onChange,
offChange
};
var out = safeAreaInsets;
var
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out = safeAreaInsets;
const onEventPrevent = /* @__PURE__ */ withModifiers(() => {
}, ["prevent"]);
const onEventStop = /* @__PURE__ */ withModifiers(() => {
...
...
@@ -749,10 +749,10 @@ function getWindowOffset() {
const left = parseInt(style.getPropertyValue("--window-left"));
const right = parseInt(style.getPropertyValue("--window-right"));
return {
top: top ? top + out.top : 0,
bottom: bottom ? bottom + out.bottom : 0,
left: left ? left + out.left : 0,
right: right ? right + out.right : 0
top: top ? top +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top : 0,
bottom: bottom ? bottom +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.bottom : 0,
left: left ? left +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.left : 0,
right: right ? right +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.right : 0
};
}
function updateCssVar(cssVars) {
...
...
@@ -13147,7 +13147,7 @@ function normalizePageMeta(pageMeta) {
}, pageMeta.pullToRefresh));
const { type, style } = navigationBar;
if (style !== "custom" && type !== "transparent") {
pullToRefresh.offset += NAVBAR_HEIGHT + out.top;
pullToRefresh.offset += NAVBAR_HEIGHT +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top;
}
pageMeta.pullToRefresh = pullToRefresh;
}
...
...
@@ -15329,7 +15329,7 @@ const getSystemInfoSync = /* @__PURE__ */ defineSyncApi("getSystemInfoSync", ()
const windowWidth = getWindowWidth(screenWidth);
let windowHeight = window.innerHeight;
const language = navigator.language;
const statusBarHeight = out.top;
const statusBarHeight =
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top;
let osname;
let osversion;
let model;
...
...
@@ -15442,12 +15442,12 @@ const getSystemInfoSync = /* @__PURE__ */ defineSyncApi("getSystemInfoSync", ()
const system = `${osname} ${osversion}`;
const platform = osname.toLocaleLowerCase();
const safeArea = {
left: out.left,
right: windowWidth - out.right,
top: out.top,
bottom: windowHeight - out.bottom,
width: windowWidth -
out.left -
out.right,
height: windowHeight -
out.top -
out.bottom
left:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.left,
right: windowWidth -
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.right,
top:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top,
bottom: windowHeight -
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.bottom,
width: windowWidth -
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.left - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.right,
height: windowHeight -
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.top - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.bottom
};
const { top: windowTop, bottom: windowBottom } = getWindowOffset();
windowHeight -= windowTop;
...
...
@@ -15467,10 +15467,10 @@ const getSystemInfoSync = /* @__PURE__ */ defineSyncApi("getSystemInfoSync", ()
model,
safeArea,
safeAreaInsets: {
top: out.top,
right: out.right,
bottom: out.bottom,
left: out.left
top:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top,
right:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.right,
bottom:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.bottom,
left:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.left
}
};
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录