Присвойте значение MediaDevices.enumerateDevices() глобальной переменной в JavaScript.Html

Программисты Html
Ответить Пред. темаСлед. тема
Anonymous
 Присвойте значение MediaDevices.enumerateDevices() глобальной переменной в JavaScript.

Сообщение Anonymous »

У меня вопрос о последовательности выполнения JavaScript. Сначала позвольте мне показать вам мой код:

Вот мой HTML:

Код: Выделить всё


Snap Photo



А вот мой JavaScript:

Код: Выделить всё

var Id;
//List cameras and microphones.
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
console.log("enumerateDevices() not supported.");
}
navigator.mediaDevices.enumerateDevices()
.then(function (devices) {
devices.forEach(function (device) {
if (device.kind == "videoinput" && device.label.indexOf('back') >= 0) {
Id = device.deviceId;
alert("ID 1 : " + Id);
}
});
})
.catch(function (err) {
console.log(err.name + ": " + err.message);
});

// Put event listeners into place
window.addEventListener("DOMContentLoaded", function () {
// Grab elements, create settings, etc.
alert("ID 2 : "+ Id);
var canvas = document.getElementById("canvas"),
videoObj = {
video: {
optional: [{ deviceId: Id }]
}
},
context = canvas.getContext("2d"),
video = document.getElementById("video"),
errBack = function (error) {
console.log("Video capture error: ", error.code);
};

// Trigger photo take
document.getElementById("snap").addEventListener("click", function () {
context.drawImage(video, 0, 0, 640, 480);
// Get the image
var image = convertCanvasToImage(canvas);
// Actions
document.getElementById("pngHolder").appendChild(image);
// Converts canvas to an image
function convertCanvasToImage(canvas) {
var image = new Image();
image.src = canvas.toDataURL("image/png");
return image;
}
});

//alert("ID 2 : " + Id);
// Put video listeners into place
if (navigator.getUserMedia) { // Standard
navigator.getUserMedia(videoObj, function (stream) {
video.src = stream;
video.play();
}, errBack);
} else if (navigator.webkitGetUserMedia) { // WebKit-prefixed
navigator.webkitGetUserMedia(videoObj, function (stream) {
video.src = window.webkitURL.createObjectURL(stream);
video.play();
}, errBack);
} else if (navigator.mozGetUserMedia) { // Firefox-prefixed
navigator.mozGetUserMedia(videoObj, function (stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
}, errBack);
}
}, false);
Я хочу вставить значение device.deviceId в переменную Id, которую я определяю в первой строке JavaScript . Это по-прежнему успешно (о чем свидетельствует предупреждение («ID 1:» + Id);). Но когда я пытаюсь поместить его в необязательный параметр: [{deviceId: Id }], идентификатор не имеет никакого значения.

А также, когда я пытаюсь запустить его в браузере, я обнаружил, что сначала отображается предупреждение («ID 2:» + Id); вместо alert("ID 1: " + Id);. Фактически, я уже поставил предупреждение("ID 1 : " + Id); первым. Я думаю, именно поэтому переменная все еще пуста.

Мой вопрос: как я могу вставить значение device.deviceId в необязательное: [{ deviceId: Id } ] ?

Подробнее здесь: https://stackoverflow.com/questions/364 ... le-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Html»