Javascript 克洛皮得不到';Acces控制允许原点';有时,有时不是
我正在使用croppie库来帮助我裁剪图片。然而,奇怪的是,有时裁剪器工作正常,有时无法裁剪图片。当它工作时,我在控制台中没有得到任何错误,但当它不工作时,我在控制台中得到这个错误 这是我下载的croppie Library,目前正在使用 这是我的密码 HTMLJavascript 克洛皮得不到';Acces控制允许原点';有时,有时不是,javascript,jquery,html,css,cross-domain,Javascript,Jquery,Html,Css,Cross Domain,我正在使用croppie库来帮助我裁剪图片。然而,奇怪的是,有时裁剪器工作正常,有时无法裁剪图片。当它工作时,我在控制台中没有得到任何错误,但当它不工作时,我在控制台中得到这个错误 这是我下载的croppie Library,目前正在使用 这是我的密码 HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="css/Profil.css"> <!-- Länk till CSS -->
<link rel="stylesheet" href="css/cropper.css"> <!-- Cropper -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" crossorigin="anonymous"> <!-- Cropper -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js" crossorigin="anonymous"></script> <!-- Croppper -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script> <!-- Croppper -->
<script src="js/cropper.js"></script> <!-- Croppper -->
<div class="container">
<label class="label" data-toggle="tooltip" title="Change your avatar">
<img class="circle-image" id="avatar" src="https://avatars0.githubusercontent.com/u/3456749?s=160" alt="avatar">
<input type="file" class="sr-only" id="input" name="image" accept="image/*">
</label>
<!-- <div class="progress">
<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>
</div> -->
<div class="alert" role="alert"></div>
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalLabel">Crop the image</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="img-container">
<img id="image" src="https://avatars0.githubusercontent.com/u/3456749">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" id="crop">Crop</button>
</div>
</div>
</div>
</div>
</div>
Javascript
window.addEventListener('DOMContentLoaded', function () {
var avatar = document.getElementById('avatar');
var image = document.getElementById('image');
var input = document.getElementById('input');
var $progress = $('.progress');
var $progressBar = $('.progress-bar');
var $alert = $('.alert');
var $modal = $('#modal');
var cropper;
$('[data-toggle="tooltip"]').tooltip();
input.addEventListener('change', function (e) {
var files = e.target.files;
var done = function (url) {
input.value = '';
image.src = url;
$alert.hide();
$modal.modal('show');
};
var reader;
var file;
var url;
if (files && files.length > 0) {
file = files[0];
if (URL) {
done(URL.createObjectURL(file));
} else if (FileReader) {
reader = new FileReader();
reader.onload = function (e) {
done(reader.result);
};
reader.readAsDataURL(file);
}
}
});
$modal.on('shown.bs.modal', function () {
cropper = new Cropper(image, {
aspectRatio: 1,
viewMode: 2,
});
}).on('hidden.bs.modal', function () {
cropper.destroy();
cropper = null;
});
document.getElementById('crop').addEventListener('click', function () {
var initialAvatarURL;
var canvas;
$modal.modal('hide');
if (cropper) {
canvas = cropper.getCroppedCanvas({
width: 160,
height: 160,
});
initialAvatarURL = avatar.src;
avatar.src = canvas.toDataURL();
$progress.show();
$alert.removeClass('alert-success alert-warning');
canvas.toBlob(function (blob) {
var formData = new FormData();
formData.append('avatar', blob, 'avatar.jpg');
$.ajax('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
data: formData,
processData: false,
contentType: false,
xhr: function () {
var xhr = new XMLHttpRequest();
xhr.upload.onprogress = function (e) {
var percent = '0';
var percentage = '0%';
if (e.lengthComputable) {
percent = Math.round((e.loaded / e.total) * 100);
percentage = percent + '%';
$progressBar.width(percentage).attr('aria-valuenow', percent).text(percentage);
}
};
return xhr;
},
success: function () {
$alert.show().addClass('alert-success').text('Upload success');
},
error: function () {
avatar.src = initialAvatarURL;
$alert.show().addClass('alert-warning').text('Upload error');
},
complete: function () {
$progress.hide();
},
});
});
}
});
});
使用实时服务器
install live-server: npm install -g live-server
Move your terminal to where your pages live: cd <path-to-content>
Start the server: live-server .
Open localhost:8080 in a browser.
安装live server:npm安装-g live server
将终端移动到页面所在的位置:cd
启动服务器:live server。
在浏览器中打开localhost:8080。
很奇怪,这是一个间歇性问题。CORS头不是一个暂时的东西。通常情况下,我会将此作为一个副本关闭(这可能值得您花时间阅读,以便您了解CORS是什么),但是这不是一个固定的问题,我会留下它,因为可能存在潜在的问题。我认为这超出了你的控制范围,是接收域的问题。假设你和他们有SLA,我会提出一个支持请求。
install live-server: npm install -g live-server
Move your terminal to where your pages live: cd <path-to-content>
Start the server: live-server .
Open localhost:8080 in a browser.