浏览器唤起相机失败问题

背景:浏览器是否可以唤起相机,依赖于接口的返回值,在此条件下,偶现唤起失败的情况,报的错误为file chooser dialog can only be shown with a user activation

原因:因为vivo浏览器安全机制原因,用户长时间操作无响应,浏览器会移除此次行为,写了个demo,发现只有情况1是可以唤起的

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
</head>
<body>
    <button style="width: 200px;height:80px;margin-top: 100px;" id="button1">延迟 1s</button><br>
    <button style="width: 200px;height:80px;margin-top: 100px;" id="button2">延迟 2s</button><br>
    <button style="width: 200px;height:80px;margin-top: 100px;" id="button3">轮询后第二次点击无效</button><br>
    <input  style="width: 200px;height:80px;margin-top: 100px;" id="input" type="file" accept="video/*" capture="camcorder">
    <script>
        var num = 1;
        document.getElementById('button1').onclick = function(){ setTimeout(() => { document.getElementById('input').click() }, 1000) }
        document.getElementById('button2').onclick = function(){ setTimeout(() => { document.getElementById('input').click() }, 2000) }
        document.getElementById('button3').onclick = function(){ 
            var timer = setInterval(() => { 
            alert(num)
            if(num == 2) {
                document.getElementById('input').click() 
                clearInterval(timer)
            }
            num++;
        }, 500) }
    </script>
</body>
</html>

解决方案:尽量改交互吧,不依赖接口,或接口后置掉,防止类型情况发生

浏览器可以通过web页面上的按钮来唤起electron的桌面应用程序。这可以通过在web页面上定义一个按钮,并使用特定的代码来实现。代码会触发电子应用程序的启动,并传递特定的参数。例如,可以通过在web页面上的按钮上添加一个链接,比如"link://postman",当用户点击这个链接时,电子应用程序将被启动并显示当前的页面。 为了实现这个功能,你可以在浏览器应用中使用electron的API来创建一个简单的浏览器窗口,然后通过在web页面上添加按钮来触发这个窗口的打开操作。在代码中,你可以使用electron的webContents和ipcRenderer模块来处理页面间的通信和参数传递。具体的实现细节可以参考相关的电子应用程序开发文档和教程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [electron做一个丐版浏览器,只有输入网址显示网页的功能,适合学习](https://download.csdn.net/download/m0_37816922/85278023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [electron应用通过web页面按钮唤醒](https://blog.csdn.net/baidu_40294156/article/details/125662614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值