我有一段JavaScript代码解析json文件并将其上传到服务器(Asp.net核心)。代码在chrome中运行良好,但在IE上点击事件没有任何事情发生就像没有错误,没有。 HTML
<form method="post" enctype="multipart/form-data">
<div class="input-group image-preview">
<input placeholder="File Name" id="LicenseFileText" style="border-bottom: 1px solid #fff" type="text" class="form-control " disabled="disabled">
<span class="input-group-btn">
<span class="btn btn-default image-preview-input">
<span class="fa fa-folder-open"></span>
<span class="image-preview-input-title">Browse</span>
<input type="file" id="files" name="files" accept=".json"/>
</span>
<button type="button" id="Upload" class="btn btn-labeled btn-info upload"><i class="fa fa-arrow-circle-o-up"></i> Upload</button>
</span>
</div>
</form>
Javascript-copies
document.querySelector('.upload').addEventListener('click', function (evt) {
if (evt.target.tagName.toLowerCase() == 'button') {
var startByte = evt.target.getAttribute('data-startbyte');
var endByte = evt.target.getAttribute('data-endbyte');
readBlob(startByte, endByte);
}
}, false);
$('#files').change(function () {
$('#LicenseFileText').val($(this).val().split('\\').pop());
});
//功能
function readBlob(opt_startByte, opt_stopByte) {
var files = document.getElementById('files').files;
if ($("#LicenseFileText").val() == "") {
NiceAlert.showNotificationError('top', 'center', 'Select a valid file');
return ;
}
var file = files[0];
var start = parseInt(opt_startByte) || 0;
var stop = parseInt(opt_stopByte) || file.size - 1;
var reader = new FileReader();
// If we use onloadend, we need to check the readyState.
reader.onloadend = function (evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
var licenseObj = JSON.parse(evt.target.result);
$.ajax({
url: "/GkAccounts/CreateLicense",
type: "POST",
contentType: "application/json;charset=utf-8",
data: JSON.stringify(licenseObj),
success: function (message) {
LoadLicense();
CheckLicenseValidity();
NiceAlert.showNotificationSuccess('top', 'center', 'License Updated');
$("#LicenseFileText").val("");
},
error: function () {
NiceAlert.showNotificationError('top', 'center', 'Validation Failed');
$("#LicenseFileText").val("");
}
});
}
};
var blob = file.slice(start, stop + 1);
reader.readAsBinaryString(blob);
}
答案 0 :(得分:1)
您可以使用javascript验证工具JSLint来确保所有浏览器的最大兼容性,因为单个省略的字符(如;
或'
)可能会导致您的脚本赢得'在特定的浏览器中工作。
JSLint将为您提供有关如何做和不进行进一步兼容的提示。
希望这会有所帮助!