JavaScript代码无法在IE和移动浏览器中使用

时间:2017-11-12 03:28:08

标签: javascript jquery asp.net-core

我有一段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);
}

1 个答案:

答案 0 :(得分:1)

您可以使用javascript验证工具JSLint来确保所有浏览器的最大兼容性,因为单个省略的字符(如;')可能会导致您的脚本赢得'在特定的浏览器中工作。 JSLint将为您提供有关如何做和不进行进一步兼容的提示。 希望这会有所帮助!