From 9e43acaafff44055d3d63f089df51a6716cbfb50 Mon Sep 17 00:00:00 2001 From: liuchuzhang Date: Wed, 6 Apr 2022 16:37:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(taro-h5):=20chooseImage=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20sourceType=20(#8815)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Zakary --- .../src/api/media/image/chooseImage.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/taro-h5/src/api/media/image/chooseImage.ts b/packages/taro-h5/src/api/media/image/chooseImage.ts index f350674e50b8..009b38680dcc 100644 --- a/packages/taro-h5/src/api/media/image/chooseImage.ts +++ b/packages/taro-h5/src/api/media/image/chooseImage.ts @@ -15,12 +15,21 @@ export const chooseImage: typeof Taro.chooseImage = function (options) { return Promise.reject(res) } - const { count = 1, success, fail, complete, imageId = 'taroChooseImage' } = options + const { + count = 1, + success, + fail, + complete, + imageId = 'taroChooseImage', + sourceType = ['album', 'camera'] + } = options const handle = new MethodHandler({ name: 'chooseImage', success, fail, complete }) const res: Partial = { tempFilePaths: [], tempFiles: [] } + const sourceTypeString = sourceType && sourceType.toString() + const acceptableSourceType = ['user', 'environment', 'camera'] if (count && typeof count !== 'number') { res.errMsg = getParameterError({ @@ -39,6 +48,9 @@ export const chooseImage: typeof Taro.chooseImage = function (options) { if (count > 1) { obj.setAttribute('multiple', 'multiple') } + if (acceptableSourceType.indexOf(sourceTypeString) > -1) { + obj.setAttribute('capture', sourceTypeString) + } obj.setAttribute('accept', 'image/*') obj.setAttribute('style', 'position: fixed; top: -4000px; left: -3000px; z-index: -300;') document.body.appendChild(obj) @@ -49,6 +61,11 @@ export const chooseImage: typeof Taro.chooseImage = function (options) { } else { el.removeAttribute('multiple') } + if (acceptableSourceType.indexOf(sourceTypeString) > -1) { + el.setAttribute('capture', sourceTypeString) + } else { + el.removeAttribute('capture') + } } return new Promise(resolve => {