Javascript 如何在angularJS.For safari浏览器和edge浏览器中下载文件

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 =

我是angularJS新手。我想下载JSON文件。它在chrome中工作,但在Edge和Safari中不工作。在Safari中,文件仅在浏览器中打开。 谢谢你的阅读。 请回答

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需要手动执行“另存为”。