2016-05-24 13 views
0

Ich versuche das Problem zu verstehen, mit dem ich feststecke. Ich mache eine Anwendung für Android über Cordova. Ich suchte nach einer Lösung, aber ich habe es nicht wirklich gefunden.Uncaught ReferenceError: LocalFileSystem ist nicht definiert

Erstens hatte ich ein Problem mit "requestFileSystem", das nicht definiert wurde, aber es scheint jetzt behoben zu sein. Sobald ich dieses Problem behoben habe, wurde das Problem in eine andere Funktion verschoben.

Ich habe im Grunde einen Knopf, schaffen sollte, speichern (und möglicherweise zeigen), um eine PDF:

<!--Button to generate PDF--> 

     <div data-role="collapsible" data-inset="false" data-mini="true"> 
      <h3>Reports</h3> 

      <div> 
       <a href="javascript:pdfCreation()" class="button"data-role="button" id="PageUnitButtonGeneratePDIReport">Generate PDI Report</a> 
       <!--<iframe width="100%" height="500px" id="pdfOutContainer"></iframe>--> 
      </div> 

     </div> 

Und das ist mein JS-Code, der das Problem enthalten:

function pdfCreation() { 

    //FIRST GENERATE THE PDF DOCUMENT ON TABLET, DOESN'T SHOW 
    console.log("generating pdf..."); 
    var doc = new jsPDF(); 
    doc.text(20, 20, 'HELLO!'); 
    doc.setFont("courier"); 
    doc.setFontType("normal"); 
    doc.text(20, 30, 'This is a PDF document generated using JSPDF.'); 
    doc.text(20, 50, 'YES, Inside of PhoneGap!'); 
    var pdfUriString = doc.output('datauristring'); 
    console.log(pdfUriString); 
    var pdfOutContainer = jQuery("#pdfOutContainer"); 
    pdfOutContainer.attr("src", pdfUriString); 

    //NEXT SAVE IT TO THE DEVICE'S LOCAL FILE SYSTEM 
    console.log("file system..."); 
    //requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 

    document.addEventListener("deviceready", onDeviceReady, false); 
     function onDeviceReady() { 
      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 

     console.log(fileSystem.name); 
     console.log(fileSystem.root.name); 
     console.log(fileSystem.root.fullPath); 

     fileSystem.root.getFile("test.pdf", {create: true}, function(entry) { 
      var fileEntry = entry; 
      console.log(entry); 

      entry.createWriter(function(writer) { 
       writer.onwrite = function(evt) { 
        console.log("write success"); 
       }; 

       console.log("writing to file"); 
       writer.write(pdfOutput); 
      }, 

      function(error) { 
       console.log(error); 
      }); 

     }, 

     function(error){ 
      console.log(error); 
     }); 
    }, 

    function(event){ 
     console.log(evt.target.error.code); 
    }); 
} 

Die Funktion, die hat das Problem ist PDFCreation. Ich füge das jdfiddle hier hinzu, nur für den Fall, dass es nützlich sein könnte.

https://jsfiddle.net/antus2f0/

Wenn jemand mir helfen kann, wäre schön! Danke.

Antwort

1

Ihren Code ein bisschen aufgeräumt. Es fehlte ein }. Wenn Sie die Funktion in jsFiddle ausführen, erhalten Sie außerdem einen Fehler is not defined für die Funktion, da es automatisch in einer window.onload-Funktion umbrochen wird.

Hier ist der Arbeitscode:

window.pdfCreation = function() { 

    //FIRST GENERATE THE PDF DOCUMENT ON TABLET, DOESN'T SHOW 
    console.log("generating pdf..."); 
    var doc = new jsPDF(); 
    doc.text(20, 20, 'HELLO!'); 
    doc.setFont("courier"); 
    doc.setFontType("normal"); 
    doc.text(20, 30, 'This is a PDF document generated using JSPDF.'); 
    doc.text(20, 50, 'YES, Inside of PhoneGap!'); 
    var pdfUriString = doc.output('datauristring'); 
    console.log(pdfUriString); 
    var pdfOutContainer = jQuery("#pdfOutContainer"); 
    pdfOutContainer.attr("src", pdfUriString); 

    //NEXT SAVE IT TO THE DEVICE'S LOCAL FILE SYSTEM 
    console.log("file system..."); 
    //requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 

    document.addEventListener("deviceready", onDeviceReady, false); 

    function onDeviceReady() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 

     console.log(fileSystem.name); 
     console.log(fileSystem.root.name); 
     console.log(fileSystem.root.fullPath); 

     fileSystem.root.getFile("test.pdf", { 
      create: true 
      }, function(entry) { 
      var fileEntry = entry; 
      console.log(entry); 

      entry.createWriter(function(writer) { 
       writer.onwrite = function(evt) { 
        console.log("write success"); 
       }; 

       console.log("writing to file"); 
       writer.write(pdfOutput); 
       }, 

       function(error) { 
       console.log(error); 
       }); 

      }, 

      function(error) { 
      console.log(error); 
      }); 
     }, 
     function(event) { 
     console.log(evt.target.error.code); 
     }); 
    } 
} 
+0

Vielen Dank für Ihre Antwort. Der Fehler, den ich jetzt habe, ist ein bisschen anders, aber ich habe es bereits während mehrerer Tests gefunden, die ich gemacht habe. "Uncaught ReferenceError: LocalFileSystem ist nicht definiert" –

0

den Code Arbeiten um ich die folgende Arbeitslösung erhielt, die kann hoffentlich jemand anderes in der Zukunft helfen.

window.pdfCreation = function() { 

     //FIRST GENERATE THE PDF DOCUMENT 
     console.log("generating pdf..."); 
     var doc = new jsPDF(); 

     doc.setFont("TimesNewRoman"); 
     doc.text(20, 10, 'HELLO!'); 
     doc.text(20, 30, 'This is a PDF summary.');  


     //PDF GENERATION ENDED 

     var pdfOutput = doc.output(); 
     console.log(pdfOutput); 

     //NEXT SAVE IT TO THE DEVICE'S LOCAL FILE SYSTEM 
     console.log("file system..."); 
     alert("Creating PDF...Please wait a few seconds!"); 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 

      console.log(fileSystem.name); 
      console.log(fileSystem.root.name); 
      console.log(fileSystem.root.fullPath); 

      fileSystem.root.getFile($("#PageUnitPurchaserName").text() + $("#PageUnitUnitName").text() + ".pdf", {create: true}, function(entry) { 

       var fileEntry = entry; 
       console.log(entry); 

       entry.createWriter(function(writer) { 
        writer.onwrite = function(evt) { 
        console.log("write success"); 
        alert("PDF successfully created!"); 
       }; 

       console.log("writing to file"); 
        writer.write(pdfOutput); 
       }, function(error) { 
        console.log(error); 
       }); 

      }, function(error){ 
       console.log(error); 
      }); 
     }, 

     function(event){ 
      console.log(evt.target.error.code); 
     }); 
    } 
Verwandte Themen