代码之家  ›  专栏  ›  技术社区  ›  Teepeemm

Chrome扩展程序如何触发Angular文件上传

  •  0
  • Teepeemm  · 技术社区  · 1 年前

    一段时间以来,我一直在使用我创建的Chrome扩展程序来帮助我将文件上传到Blackboard。我将文件上传到扩展插件的弹出窗口,读取内容和文件名,并将以下内容注入页面:

    const file = new File([contents],filename,{"type":'text/csv'}),
        dt = new DataTransfer();
    dt.items.add(file);
    document.querySelector('input[type="file"]').files = dt.files;
    setTimeout(function() {
        document.querySelector('input[type="submit"]').click();
    },1000);
    

    这个网站现在正在切换到Angular,这似乎不再有效。相关的新HTML是(我认为):

    <div class="file-upload-container">
     <div ngf-drop="" ng-model="files" class="file-upload ng-pristine ng-valid ng-empty ng-touched" ngf-multiple="fileUpload.allowMultiple" ngf-drop-disabled="disableDrag && disableDrag()" ngf-change="fileUpload.onFileSelect($files, $file, $newFiles, $duplicateFiles, $invalidFiles, $event)" ngf-stop-propagation="!(disableDrag && disableDrag())" ngf-drag-over-class="dragClass" tabindex="-1">
      <div class="fileUploadTransclude" ng-transclude="" ng-show="fileUpload.transcludeVisible">
       <div class="columns drag-area ng-scope" ng-class="{'dropped': gradesUploadSettings.hasDroppedClass}">
        <div class="file-icon"></div>
        <div class="drag-info">
         <p bb-translate="" class="ng-scope">Drop your spreadsheet to upload</p>
         <p bb-translate="" class="ng-scope">You can upload a CSV or XLS file</p>
        </div>
       </div>
      </div>
      <div class="js-file-upload-complete" ng-attr-ready="{{!fileUpload.uploadInProgress}}" ready="true"></div>
      <div ng-show="fileUpload.fileReviewVisible" class="file-upload-review ng-hide"></div>
     </div>
     <input ngf-select="" ng-if="!fileUpload.allowMultiple" type="file" ngf-change="fileUpload.onFileSelect($files)" class="hide fileUploadInput ng-scope" analytics-id="components.directives.fileUpload.input.file"><!-- end ngIf: !fileUpload.allowMultiple -->
    </div>
    

    如何使用此新页面触发文件上载? 请注意,这不是我的页面,因此我无法更改现有的html或javascript。但这是一个Chrome扩展,所以我可以添加任何我想要的javascript。我能找到的最接近的问题是

    0 回复  |  直到 1 年前