Вы сказали, что пробовали методы размытия/фокус, но вы пытаетесь видимость апи за https://stackoverflow.com/a/19519701/6004366?
Я написал короткий сценарий и протестировал его, перейдя на камеру, а затем обратно, и он регистрирует как то, что он потерял видимость, так и восстановил ее.
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<input type="file" accept="image/*" capture="camera">
<ul id="log">
</ul>
<script type="text/javascript">
var vis = (function(){
var stateKey, eventKey, keys = {
hidden: "visibilitychange",
webkitHidden: "webkitvisibilitychange",
mozHidden: "mozvisibilitychange",
msHidden: "msvisibilitychange"
};
for (stateKey in keys) {
if (stateKey in document) {
eventKey = keys[stateKey];
break;
}
}
return function(c) {
if (c) document.addEventListener(eventKey, c);
return !document[stateKey];
}
})();
vis(function(){
var logitem = vis() ? 'Visible' : 'Not visible';
var loglist = document.getElementById("log");
var node = document.createElement("LI");
var textnode = document.createTextNode(logitem);
node.appendChild(textnode);
loglist.appendChild(node);
});
</script>
</body>
</html>
Вы можете использовать события размытия и фокусировки относительно окна. См. Http://stackoverflow.com/questions/1760250/how-to-tell-if-browser-tab-is-active –
Я пробовал это, но он не срабатывал, когда я открывал камеру. – omega