2016-05-18 14 views
0

Ich verwende Qzprint API zum Drucken von Etiketten in meiner offenen Warenkorb-Erweiterung. Alles funktionierte gut, aber plötzlich hörte es auf, an FF zu arbeiten. Im Internet Explorer funktioniert es gut. Wenn ich Warnungen in meinen Funktionen von applet hinzufüge, funktioniert es gut auf firefox, aber nicht sicher, warum nicht ohne Warnungen. Hier ist mein Code.JS funktioniert nicht einwandfrei in Firefox

Aufruf Applet Funktionen in meinem header.tpl

<script type="text/javascript"> 
deployQZ('<?php echo HTTP_CATALOG ?>'); 
useDefaultPrinter(); 
<script> 

Applet-Datei enthält Funktionen

function deployQZ(path) { 
//alert("alert for printing label"); 
    pathApplet = path + 'java/qz-print.jar'; 
    pathJnlp = path + 'java/qz-print_jnlp.jnlp'; 
    var attributes = {id: "qz", code:'qz.PrintApplet.class', 
     archive: pathApplet, width:1, height:1}; 
    var parameters = {jnlp_href: pathJnlp, 
     cache_option:'plugin', disable_logging:'false', 
     initial_focus:'false'}; 
    if (deployJava.versionCheck("1.7+") == true) {} 
    else if (deployJava.versionCheck("1.6+") == true) { 
     attributes['archive'] = 'java/jre6/qz-print.jar'; 
     parameters['jnlp_href'] = 'java/jre6/qz-print_jnlp.jnlp'; 
    } 
    deployJava.runApplet(attributes, parameters, '1.5'); 
} 

/** 
* Automatically gets called when applet has loaded. 
*/ 
function qzReady() { 
    // Setup our global qz object 
    window["qz"] = document.getElementById('qz'); 
    //var title = document.getElementById("title"); 
    if (qz) { 
     try { 
      //title.innerHTML = title.innerHTML + " " + qz.getVersion(); 
      //document.getElementById("content").style.background = "#F0F0F0"; 
     } catch(err) { // LiveConnect error, display a detailed meesage 
      document.getElementById("content").style.background = "#F5A9A9"; 
      alert("ERROR: \nThe applet did not load correctly. Communication to the " + 
       "applet has failed, likely caused by Java Security Settings. \n\n" + 
       "CAUSE: \nJava 7 update 25 and higher block LiveConnect calls " + 
       "once Oracle has marked that version as outdated, which " + 
       "is likely the cause. \n\nSOLUTION: \n 1. Update Java to the latest " + 
       "Java version \n   (or)\n 2. Lower the security " + 
       "settings from the Java Control Panel."); 
     } 
    } 
} 

    /** 
* Returns is the applet is not loaded properly 
*/ 
function isLoaded() { 
    if (!qz) { 
     alert('Error:\n\n\tPrint plugin is NOT loaded!'); 
     return false; 
    } else { 
     try { 
      if (!qz.isActive()) { 
       alert('Error:\n\n\tPrint plugin is loaded but NOT active!'); 
       return false; 
      } 
     } catch (err) { 
      alert('Error:\n\n\tPrint plugin is NOT loaded properly!'); 
      return false; 
     } 
    } 
    return true; 
} 

    function useDefaultPrinter() { 
    //alert("alert for printing label"); 
    if (isLoaded()) { 
     // Searches for default printer 
     qz.findPrinter(); 

     // Automatically gets called when "qz.findPrinter()" is finished. 
     window['qzDoneFinding'] = function() { 
      // Alert the printer name to user 
      var printer = qz.getPrinter(); 
      //alert(printer !== null ? 'Default printer found: "' + printer + '"': 
       //'Default printer ' + 'not found'); 
      document.getElementById("name_printer").innerHTML = 'Default printer found: "' + printer + '"'; 
      // Remove reference to this function 
      window['qzDoneFinding'] = null; 
      defaultFound = true; 
     }; 
    } 
} 

Da u in meinem deployqz sehen() und UseDefaultPrinter() -Funktionen ich habe Warnung auf der ersten Zeile, die in Kommentaren ist, wenn es kommentierte es funktioniert nicht in Feuer Fuchs und wenn nicht kommentiert, als es funktioniert gut. Mit Kommentaren bekomme ich eine Warnmeldung von der isLoaded() Funktion "Print plugin is NOT LADED"!

Auch in meiner Konsole bekomme ich diesen

Ein unausgewogener Baum geschrieben wurde document.write() verwendet verursachten Daten aus dem Netzwerk neu geparst werden. Weitere Informationen https://developer.mozilla.org/en/Optimizing_Your_Pages_for_Speculative_Parsing

+0

wie ein Timing-Problem sieht. Ändere 'if (isLoaded()) {...}' in if (isLoaded()) {...} else {setTimeout (useDefaultPrinter, 300); } ' – mplungjan

+0

@mplungjan, auch wenn ich nicht useDefaultPrinter() aufrufen gibt es mir Fehler, so denke ich, es ist auf die deployqz() .. –

+0

Versuchen Sie,' var qz; 'vor der ersten Funktion, dann ändern' window ["qz "] =' to 'qz =' - Ich sehe 'qzReady()' nirgends, daher wird es wahrscheinlich vom Applet aufgerufen. Haben Sie Fehler in der Konsole? Kannst du qzReady() auf die Art verzögern und aufrufen, wie ich useDefaultPrinter aufgerufen habe? – mplungjan

Antwort

0

Try this:

  1. Wenn die qzReady durch das Applet aufgerufen wird, wenn Sie fertig sind, innerhalb dieser Funktion setzen UseDefaultPrinter.
  2. wenn isLoaded einige Zeit dauert, rufen UseDefaultPrinter dort auch mit setTimeout

Gefällt Ihnen dieses

<script type="text/javascript"> 
deployQZ('<?php echo HTTP_CATALOG ?>'); 
<script> 

Applet-Datei enthält Funktionen

var qz; 

function deployQZ(path) { 
    pathApplet = path + 'java/qz-print.jar'; 
    pathJnlp = path + 'java/qz-print_jnlp.jnlp'; 
    var attributes = {id: "qz", code:'qz.PrintApplet.class', 
     archive: pathApplet, width:1, height:1}; 
    var parameters = {jnlp_href: pathJnlp, 
     cache_option:'plugin', disable_logging:'false', 
     initial_focus:'false'}; 
    if (deployJava.versionCheck("1.7+") == true) {} 
    else if (deployJava.versionCheck("1.6+") == true) { 
     attributes['archive'] = 'java/jre6/qz-print.jar'; 
     parameters['jnlp_href'] = 'java/jre6/qz-print_jnlp.jnlp'; 
    } 
    deployJava.runApplet(attributes, parameters, '1.5'); 
} 

/** 
* Automatically gets called when applet has loaded. 
*/ 
function qzReady() { 
    // Setup our global qz object 
    qz = document.getElementById('qz'); 
    if (qz) { 
     try { 
      useDefaultPrinter(); 
     } catch(err) { // LiveConnect error, display a detailed meesage 
      document.getElementById("content").style.background = "#F5A9A9"; 
      alert("ERROR: \nThe applet did not load correctly. Communication to the " + 
       "applet has failed, likely caused by Java Security Settings. \n\n" + 
       "CAUSE: \nJava 7 update 25 and higher block LiveConnect calls " + 
       "once Oracle has marked that version as outdated, which " + 
       "is likely the cause. \n\nSOLUTION: \n 1. Update Java to the latest " + 
       "Java version \n   (or)\n 2. Lower the security " + 
       "settings from the Java Control Panel."); 
     } 
    } 
    else { setTimeout(useDefaultPrinter,300); } 
} 

    /** 
* Returns is the applet is not loaded properly 
*/ 
function isLoaded() { 
    if (!qz) { 
     alert('Error:\n\n\tPrint plugin is NOT loaded!'); 
     return false; 
    } else { 
     try { 
      if (!qz.isActive()) { 
       alert('Error:\n\n\tPrint plugin is loaded but NOT active!'); 
       return false; 
      } 
     } catch (err) { 
      alert('Error:\n\n\tPrint plugin is NOT loaded properly!'); 
      return false; 
     } 
    } 
    return true; 
} 

function useDefaultPrinter() { 
    //alert("alert for printing label"); 
    if (isLoaded()) { 
     // Searches for default printer 
     qz.findPrinter(); 

     // Automatically gets called when "qz.findPrinter()" is finished. 
     window['qzDoneFinding'] = function() { 
      // Alert the printer name to user 
      var printer = qz.getPrinter(); 
      //alert(printer !== null ? 'Default printer found: "' + printer + '"': 
       //'Default printer ' + 'not found'); 
      document.getElementById("name_printer").innerHTML = 'Default printer found: "' + printer + '"'; 
      // Remove reference to this function 
      window['qzDoneFinding'] = null; 
      defaultFound = true; 
     }; 
    } 
    else { setTimeout(useDefaultPrinter,300); } 
} 
+0

waoww es funktioniert .. Können Sie bitte erklären, wie Sie das tun? Bitte erarbeiten, was war eigentlich falsch? Danke viel! –

+0

Siehe update - das Hauptproblem war Aufruf von UseDefaultPrinter direkt af ter bereitstellen. Da es asynchron war, bestand eine gute Chance, dass es noch nicht fertig war, bis qzReady überhaupt gelaufen war – mplungjan