2015-09-04 5 views
0

У меня есть приложение в Angular JS, и оно использует JSPDF.Угловое приложение JS и JSPDF не работают в IE вообще

Проблема в том, что создание PDF-файлов работает в Chrome, Firefox и Safari, но не в IE вообще. Там, я получаю следующее сообщение об ошибке:

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

код в JS файл для генерации PDF:

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(); 
    }); 

ответ

0

IE не поддерживает нестандартную функцию trimLeft из String.prototype, для получения дополнительной информации проверки 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());

+0

Где бы я положил это в моем angular.js коде? – Sole

+0

@Sole вы можете поместить его в файл js, а затем включить его перед своим JSPDF –

Смежные вопросы