一段时间以来,我一直在使用我创建的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。我能找到的最接近的问题是