如何使我的angularjs指令在EDGE上工作?

时间:2018-02-12 08:14:11

标签: angularjs-directive microsoft-edge

我有这个指令选择一个具有特定ID的表并将其转换为csv报告,这是该指令的代码:

 myApp.directive('exportToCsv', function () {
        return {
            restrict: 'A',

            link: function (scope, element, attrs) {
                function stringify(str) {
                    return '"' + str.replace(/^\s\s*/, '').replace(/\s*\s$/, '').replace(/"/g, '""') + '"';
                }
                var el = element[0];
                element.bind('click', function (e) {


                    var elementResult = document.querySelector('#tabletarget');


                    /* var table = angular.element(document).find('#table-target'); */

                    var table = elementResult;


                    var csvString = '';
                    for (var i = 0; i < table.rows.length; i++) {
                        var rowData = table.rows[i].cells;
                        for (var j = 0; j < rowData.length; j++) {
                            if (rowData[j].innerHTML.indexOf('<a href') > -1) {
                                var ele = angular.element(rowData[j]);
                                for (var k = 0; k < ele[0].childNodes.length; k++) {
                                    if (ele[0].childNodes[k].tagName == 'A') {
                                        csvString = csvString + stringify(ele[0].childNodes[k].innerText) + ",";
                                    }
                                }
                            } else if (rowData[j].innerHTML.indexOf('<em') > -1 || rowData[j].innerHTML.indexOf('<strong>') > -1) {
                                var ele = angular.element(rowData[j]);
                                csvString = csvString + stringify(ele[0].textContent) + ",";
                            } else {
                                csvString = csvString + stringify(rowData[j].innerHTML) + ",";
                            }
                        }
                        csvString = csvString.substring(0, csvString.length - 1);
                        csvString = csvString + "\n";
                    }
                    console.log(csvString);
                    csvString = csvString.substring(0, csvString.length - 1);
                    // alert(csvString);
                    var a = $('<a/>', {
                        style: 'display:none',
                        href: 'data:application/csv;base64,' + btoa(csvString),
                        download: 'export.csv'
                    }).appendTo('body')
                    a[0].click()
                    a.remove();
                });
            }
        }
    });

在标记中,我将按钮放在html中:

  <button export-to-csv class="form-control" >Download</button>

我怀疑EDGE / IE中不支持document.querySelector?

我还能用什么?

在chrome和mozilla上正常工作。

在Edge的控制台中,我收到NO错误,并在控制台中获得正确的输出,但是下载弹出窗口没有显示,也许下载需要对Edge进行不同的处理?

0 个答案:

没有答案