У меня проблема с тем, что серый фон модального окна не исчезает, когда я нажимаю кнопку «Отмена».Ни одна из следующих опций не помогла мне:
- Не делать положение контейнера для модала не фиксированным.Проблема в том, что мой модал не находится ни в одном контейнере.
$('#snapshotModal').modal().remove(); $('.modal-backdrop').remove();
Он удаляет фон, но модал работает не так, как ожидалось (В первый раз все хорошо, но когда мы закрываем и пытаемся открыть модалво второй раз, это дает исключение, что canvas
равно нулю) $('#snapshotModal').modal('hide');
не работает вообще (даже не закрывает модальное)
I 'добавив код ниже.Спасибо за все ваши ответы!
CameraStreamView.cshtml
<style>
.myVideo {
left: 50%;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
min-width: 50%;
min-height: 50%;
}
.child {
left: 50%;
position: absolute;
top: 80%;
transform: translate(-50%, -50%);
}
.myButton {
background: url(../../img/camera.png) no-repeat;
cursor: pointer;
border: none;
width: 100px;
height: 100px;
}
.myButton:active /* use Dot here */ {
background: url(../../img/camera.png) no-repeat;
}
.canvas {
width: 30%;
height: 30%;
background-color: white;
z-index: 10;
display: block;
}
</style>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Film a person</title>
</head>
<body onload="start()" onunload="stop()">
<div class="container">
<video id="video" class="myVideo" style="display: block; margin: 0 auto; margin-top: 30px;" autoplay></video>
<input id="button" class="child myButton" value="">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="~/Scripts/GetCameraFeed.js"></script>
<script>
var img;
$('#button').on('click', function () {
$('#snapshotModal').appendTo("body").modal('show');
var canvas = document.getElementById('canvas');
canvas.width = 200;
canvas.height = 200;
canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
img = canvas.toDataURL();
$('#modalContent').append('<input id="analyzePictureButton" style="display: block;" type="submit" value="Analyze picture"/>');
$('#modalFooter').append('<button class="btn btn-primary" data-dismiss="modal" id="closeButton">Cancel</button>');
$('#analyzePictureButton').on('click', function () {
$.ajax({
url: '/CameraStream/CaptureSnapshot',
type: 'POST',
dataType: "json",
data: { 'imgBase64': JSON.stringify(img) },
success: function (data) {
alert(data.result);
},
error: function () {
alert("An error occured while analyzing picture");
}
});
});
$('#closeButton').on('click', function () {
$('#snapshotModal').modal('hide');
});
});
</script>
<div id="snapshotModal" class="modal fade" role="dialog" data-url="@Html.Action("SnapshotModalView", "CameraStream")"></div>
</body>
</html>
SnapshotModalView.cshtml
<div class="modal-dialog">
<div id="modalContent" class="modal-content">
<canvas id="canvas" class="canvas"></canvas>
<div id="modalFooter" class="modal-footer">
</div>
</div>
</div>