undefined 不是对象(评估“navigation.mediaDevices.getUserMedia”)
Posted
技术标签:
【中文标题】undefined 不是对象(评估“navigation.mediaDevices.getUserMedia”)【英文标题】:undefined is not an object (evalution 'navigation.mediaDevices.getUserMedia') 【发布时间】:2020-07-14 10:49:11 【问题描述】:我想打开一个相机扫描仪,下面是在 android 中正常工作但在 ios 中出现错误的代码
TypeError: undefined is not an object (evaluation 'navigation.mediaDevices.getUserMedia')
这里是完整的教程链接https://devdactic.com/pwa-qr-scanner-ionic/ 非常感谢您的帮助
async startScan()
// Not working on iOS standalone mode!
const stream = await navigator.mediaDevices.getUserMedia(
video: facingMode: 'environment'
);
this.videoElement.srcObject = stream;
// Required for Safari
this.videoElement.setAttribute('playsinline', true);
this.loading = await this.loadingCtrl.create();
await this.loading.present();
this.videoElement.play();
requestAnimationFrame(this.scan.bind(this));
async scan()
if (this.videoElement.readyState === this.videoElement.HAVE_ENOUGH_DATA)
if (this.loading)
await this.loading.dismiss();
this.loading = null;
this.scanActive = true;
this.canvasElement.height = this.videoElement.videoHeight;
this.canvasElement.width = this.videoElement.videoWidth;
this.canvasContext.drawImage(
this.videoElement,
0,
0,
this.canvasElement.width,
this.canvasElement.height
);
const imageData = this.canvasContext.getImageData(
0,
0,
this.canvasElement.width,
this.canvasElement.height
);
const code = jsQR(imageData.data, imageData.width, imageData.height,
inversionAttempts: 'dontInvert'
);
if (code)
this.scanActive = false;
this.scanResult = code.data;
this.showQrToast();
else
if (this.scanActive)
requestAnimationFrame(this.scan.bind(this));
else
requestAnimationFrame(this.scan.bind(this));
【问题讨论】:
【参考方案1】:getUserMedia
在 Capacitor 使用的 WKWebView
上不可用。因此,除非 Apple 将来提供 getUserMedia
,否则您将无法使用它。
【讨论】:
***.com/questions/45692526/… 这个解决方案行不通? 不,getUserMedia 在 Safari 中可用,但在 WKWebView 中不可用 Apple Safari 很可能会取代 Microsoft Internet Explorer 长期以来与其他浏览器极其不兼容的冠军。以上是关于undefined 不是对象(评估“navigation.mediaDevices.getUserMedia”)的主要内容,如果未能解决你的问题,请参考以下文章
React native - undefined 不是一个对象('评估 this.props.navigation')
undefined 不是对象(评估“navigation.mediaDevices.getUserMedia”)
TypeError undefined 不是对象(评估'e.props.onChangeToken')
undefined不是对象(评估'_effects.buffers.expanding')