Angular JS App和JSPDF根本不在IE中工作

时间:2015-09-04 11:53:43

标签: javascript angularjs jspdf

我在Angular JS中有一个应用程序,它正在使用JSPDF。

问题是生成PDF可以在Chrome,Firefox和Safari中运行,但根本不在IE中运行。在那里,我收到以下错误:

SCRIPT438: Object doesn't support property or method 'trimLeft' 
jspdf.plugin.from_html.js, line 71 character 4

用于生成PDF的js文件中的代码:

 function mainControl($scope) {

    $scope.showtooltip = false;
    $scope.value = 'Generate PDF';

    $scope.hideTooltip = function() {
      $scope.showtooltip = false;
    }

    $scope.toggleTooltip = function(e) {
      e.stopPropagation();
      $scope.value = 'HERE';
      $scope.showtooltip = !$scope.showtooltip;
    }
  }

  function printPDF() {

    var doc = new jsPDF();
    var elementHandler = {
      '#oi' : function(element, renderer) {
        return true;
      }
    };

    var source = window.document.getElementsByTagName("body")[0];

    doc.fromHTML($('#content').get(0), 10, 15, {
      'width' : 190
    });


    doc.setFont("helvetica");
    doc.setFontType("normal");
    doc.setTextColor(198, 0, 24);
    doc.setFontSize(10);
    doc.text(10, 10,  'xxxx');

    doc.output("dataurlnewwindow")  
  }

  var Show = {
    getFromPDF : function() {
      $('#btn-pdf').click(function() {
        printPDF();
      });
    }
  }

  $(function() {
    Show.getFromPDF();
  });

1 个答案:

答案 0 :(得分:0)

IE不支持String.prototype的非标准函数trimLeft,以获取更多信息检查this

这是一种解决方法:

<!--[IF IE]>
<script type="text/javascript">
    if (typeof String.prototype.trimLeft !== 'function') {
        String.prototype.trimLeft = function() {
            return this.replace(/^\s*/,'');
        }
    }
</script>

这是一个有效的演示:

if (typeof String.prototype.trimLeft !== 'function') {
  String.prototype.trimLeft = function() {
    return this.replace(/^\s*/, '');
  }
}


var myString = "                                         YEBO zsdsad sadsad    ";
console.log("test");
console.log(myString.trimLeft());