我使用Blob
和FileReader
来处理源自输入元素的一些图像文件。但是,为了安全起见,我已将整个操作包裹在if (window.FileReader && window.Blob) {}
内。
最近,我在代码中添加了Blob
的填充,以便在BlobBuilder
不存在但Blob
不存在的情况下使用BlobBuilder
(某些移动浏览器。)
我的问题是:由于我已经添加了polyfill,我需要在if (window.FileReader && window.Blob) {}
进行调整吗?例如。现在应该是if (window.FileReader && (window.Blob || window.BlobBuilder))
吗?
我的目标是确保只在FileReader
和polyfilled Blob
存在时调用我的JS代码。
作为参考,这里使用Blob
我的填充物:
Blob = (function() {
var nativeBlob = Blob;
// Add unprefixed slice() method.
if (Blob.prototype.webkitSlice) {
Blob.prototype.slice = Blob.prototype.webkitSlice;
}
else if (Blob.prototype.mozSlice) {
Blob.prototype.slice = Blob.prototype.mozSlice;
}
// Temporarily replace Blob() constructor with one that checks support.
return function(parts, properties) {
try {
// Restore native Blob() constructor, so this check is only evaluated once.
Blob = nativeBlob;
return new Blob(parts || [], properties || {});
}
catch (e) {
// If construction fails provide one that uses BlobBuilder.
Blob = function (parts, properties) {
var bb = new (WebKitBlobBuilder || MozBlobBuilder), i;
for (i in parts) {
bb.append(parts[i]);
}
return bb.getBlob(properties && properties.type ? properties.type : undefined);
};
}
};
}());
如果经验丰富的开发人员有关于调整这种填充物的建议,我也会对此持开放态度。提前谢谢。
注意:在这个问题的范围内,让我们坚持使用纯JS。我是服务器端开发人员,他是JS的新手。在转向JQuery之前,我想学习vanilla JS基础知识。
答案 0 :(得分:0)
如果您想确保if (window.FileReader && window.Blob) {
...
}
和 <profiles>
<profile>
<id>jshint</id>
<activation>
<file>
<exists>${user.home}/.m2/repository/path/to/jshint/artifact.jar</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
...
<plugin>
<plugins>
<build>
</profile>
</profiles>
都存在,那么这样做是准确的:
<activeProfiles>
<activeProfile>jshint</activeProfile>
</activeProfiles>