Javascript 如何在angularJS.For safari浏览器和edge浏览器中下载文件
我是angularJS新手。我想下载JSON文件。它在chrome中工作,但在Edge和Safari中不工作。在Safari中,文件仅在浏览器中打开。 谢谢你的阅读。 请回答Javascript 如何在angularJS.For safari浏览器和edge浏览器中下载文件,javascript,angularjs,safari,Javascript,Angularjs,Safari,我是angularJS新手。我想下载JSON文件。它在chrome中工作,但在Edge和Safari中不工作。在Safari中,文件仅在浏览器中打开。 谢谢你的阅读。 请回答 function itemExport() { var a = document.createElement("a"); document.body.appendChild(a); //a.style =
function itemExport() {
var a = document.createElement("a");
document.body.appendChild(a);
//a.style = "display: none";
if ($scope.selectedRows.length > 0) {
commonFactory.itemExport($scope.selectedRows, $scope.className).then(function (data) {
var json = JSON.stringify(data.data),
blob = new Blob([json], {type: "octet/stream"});
//url = window.URL.createObjectURL(blob);
var encodedUri = encodeURI("data:text/plain;charset=utf-8," + json);
a.setAttribute("href",encodedUri);
if ($scope.selectedRows.length === 1) {
commonFactory.getInstanceByUID($scope.domainUID, $scope.classUID, $scope.className, $scope.selectedRows[0], $scope.isCoreComponents).then(function (inst) {
a.setAttribute("download", inst[0]._fields[0].properties.Name+".json");
a.click();
window.URL.revokeObjectURL(url);
});
} else {
a.download = $scope.className+".json";
a.click();
window.URL.revokeObjectURL(url);
}
});
} else {
toastrFactory.warning('Please select at least one item to Export', 'Warning');
}
}
对答案的评论说,如果数据长度超过2000个字符,此方法在internet explorer中不起作用。我认为您无法回避这个问题,因此您要么缩短数据,要么从可以设置标题的服务器提供数据。@ippi在safari中是否可行?如果我知道答案,我会给出答案。目前,这主要是猜测,但可能很有趣,甚至可能有帮助。@ippi-好的,谢谢。@Brian我用过。它适用于edge browser,chrome,但safari需要手动执行另存为。对答案的评论说,如果数据超过2000个字符,此方法在internet explorer中不起作用。我认为您无法回避这个问题,因此您要么缩短数据,要么从可以设置标题的服务器提供数据。@ippi在safari中是否可行?如果我知道答案,我会给出答案。目前它主要是猜测,但可能很有趣,甚至可能有帮助。@ippi-好的,谢谢。@Brian我用过。它适用于edge browser,chrome,但safari需要手动执行“另存为”。