OliverOmen: Druckauftrag mit Timeout-Funktion oder so was ?

Halli Hallo,

Ich habe mal ein kleines Problem  , wobei ich aber keine Antwort finde. Ich muß auch dazu sagen, das ich so richtig kein Java Script kann, sondern nur so lala.
Naja es geht darum, dass ich einen Barcode-Generator entwickelt habe und wenn ich den Button zum Erstellen des Barcodes gedrückt habe, dann soll so ca. nach 10 Sekunden sich das Fenster zum Druck des Barcodes öffnen.
Hier ist mal das Druckscript:

<script language="JavaScript">
function print() {
if (document.all) {
var OLECMDID_PRINT = 6;
var OLECMDEXECOPT_DONTPROMPTUSER = 2;
var OLECMDEXECOPT_PROMPTUSER = 1;
var WebBrowser = "<OBJECT ID='WebBrowser1' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></OBJECT>";
document.body.insertAdjacentHTML("beforeEnd", WebBrowser);
WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
WebBrowser1.outerHTML = "";
} else {
self.print();
}
}
</script>
Im Button für die Generierung steht , dann logischer weise :
onclick="javascript:print()"
Es klappt auch, das sich das Druckfenster öffnet, aber zu schnell, da der Barcode Clientseitig generiert wird. Und was dann gedruckt wird ist nur Müll, sprich ein Barcode mit 11x0(Standard-Barcode). Und nun zu meiner Frage, ist es möglich in dem Java Script sowas wie ein Timeout einzufügen, das dafür sorgt, dass der Druckauftrag erst ca. 10 Sek. nach drücken des Buttons sich öffnet?
Wäre echt cool , wenn ihr mir eine Tip oder so geben könntet, wie ich das Problem lösen kann.

Ich danke euch schon mal im Vorraus

Bye Bye

sagt

OliverOmen

  1. Hi,

    Naja es geht darum, dass ich einen Barcode-Generator entwickelt habe und wenn ich den Button zum Erstellen des Barcodes gedrückt habe, dann soll so ca. nach 10 Sekunden sich das Fenster zum Druck des Barcodes öffnen.

    was hast Du anhand von SelfHTML in dieser Beziehung ermitteln können? Wonach hast Du im Archiv gesucht?

    <script language="JavaScript">

    ERROR: Required attribute "type" missing.

    function print() {

    Ein sehr ungünstiger Name für eine Funktion. _Sehr_ ungünstig.

    self.print();

    Diese Methode ist nicht zwingend vorhanden. Prüfe zuvor auf ihre Existenz.

    Im Button für die Generierung steht , dann logischer weise :
    onclick="javascript:print()"

    Das ist nicht logisch, sondern absurd. "javascript:" ist kein JavaScript-Befehl, nicht mal gültige JavaScript-Syntax. Warum sollte man so etwas an eine Stelle schreiben, an der JavaScript-Code verlangt wird?

    ist es möglich in dem Java Script sowas wie ein Timeout einzufügen,

    Ich verstehe wirklich nicht, warum Du die Lösung nicht selbst finden konntest, zumal Du bereits die richtigen Begriffe verwendest. "JavaScript" schreibt man als Eigennamen allerdings zusammen; "Java Script" könnte ein Script sein, welches in einer völlig anderen Sprache (Java nämlich) geschrieben wurde.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    Und nun zu meiner Frage, ist es möglich in dem Java Script sowas wie ein Timeout einzufügen, das dafür sorgt, dass der Druckauftrag erst ca. 10 Sek. nach drücken des Buttons sich öffnet?

    Verdende doch dieses Javascript:

    <script type='text/javascript'>
    /* -----^^ - Language ist nicht so toll.. (valide) */
    function print() {
    window.setTimeout(Go(), 10000),
    /* ----------------------^^ - Zeit in Millisekunden. */
    }
    function Go() {
    if (document.all) {
    var OLECMDID_PRINT = 6;
    var OLECMDEXECOPT_DONTPROMPTUSER = 2;
    var OLECMDEXECOPT_PROMPTUSER = 1;
    var WebBrowser = '<OBJECT ID='WebBrowser1' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></OBJECT>';
    [..Und so weiter]
    }
    </script>

    Grüße,
    Christoph.

    1. window.setTimeout(Go(), 10000),

      Muss natürlich richtig heißen:
      window.setTimeout(Go(), 10000);

      Das Semikolon schließt Befehle ab und kein Komma - kleiner Tippfehler, sorry.

      1. Hi,

        Muss natürlich richtig heißen:

        auch das ist noch falsch. Einer der Gründe, weshalb man _niemals_ Lösungen posten sollte. Diese zu finden ist Aufgabe des Fragestellers.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
    2. Ich danke dir Christoph aber so ganz will es immer noch nich funzen..
      Kann mir jemand vielleicht helfen ?? Ich weiß doch nicht, wie das nur gehen soll, der meint immer, dass window.setTimeout(Go(), 10000); ein ungültiges Argument ist..

      1. Hallo Oliver,

        Kann mir jemand vielleicht helfen ?? Ich weiß doch nicht, wie das nur gehen soll, der meint immer, dass window.setTimeout(Go(), 10000); ein ungültiges Argument ist..

        Ist es ja auch. setTimeout erwartet als erstes Argument einen String.

        Grüße
        Andreas

        1. Komisch, bei mir funktioniert das..
          Du kannst ja auch mal alles klein schreiben.

          1. Also meine Script ist nun genauso wie du es mir gesagt hast:

            <script type='text/javascript'>

            function print() {
            window.settimeout(go(), 10000);
            }
            function go() {
            if (document.all) {

            var OLECMDID_PRINT = 6;
                    var OLECMDEXECOPT_DONTPROMPTUSER = 2;
                    var OLECMDEXECOPT_PROMPTUSER = 1;
                    var WebBrowser = "<OBJECT ID='WebBrowser1' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></OBJECT>";
                        document.body.insertAdjacentHTML("beforeEnd", WebBrowser);
                        WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
                        WebBrowser1.outerHTML = "";
                } else {
                    self.print();
                }
            }
            </script>
            Aber es kommt immer noch eine Fehlermeldung in der Zeile mit dem settimeout : Das Objekt unterstützt diese Eigenschaft oder Methode nicht.
            Ich arbeite mit dem HTML-Editor von Ulli Meybohm und die Fehlermeldung kommt auch nur wenn ich dem Button für die Generierung des Barcodes klicke und das ja auch gleich mit der button zum Drucken ist.

            Ich weiß ich nerve euch, aber habt ich denn nicht noch eine andere Lösung ?? Ich wäre euch da echt dankbar.

            1. Hallo Oliver,

              Also meine Script ist nun genauso wie du es mir gesagt hast:
              window.settimeout(go(), 10000);

              1. Die Funktion heisst setTimeout. (Gross-/Kleinschreibung beachten).
              2. setTimeout erwartet als ersten Parameter einen String.
              3. Strings schreibt man in Anführungszeichen ("").

              Warum hast Du nach Cheatahs oder spätestens meiner Antwort nicht einfach mal in selfhtml nachgeguckt?

              Grüße
              Andreas

              1. Also Andreas dank deines Tips habe ich mich nun mal in selfhtml einwenig schlau gemacht.Mein Script sieht nun so aus:

                <script type='text/javascript'>
                function go() {
                        self.print();
                }
                window.setTimeout("go()",10000);

                </script>

                Nun ist nur noch das Problem, dass sich zuerst ein Druckfenster öffnet, und wenn ich dieses schließe, dann öffnet sich genau nach 10 Sekunden das 2. Druckfenster. ich bin erst mal froh, dass es soweit schon mal geht, nun muß ich aber nur noch ne Lösung finden, wie ich es hinbekomme, das sich das erste Fenster nicht öffnet.
                Kann es sein, dass mein Script ein wenig komisch ist ?? Und auch falsch ??

                1. Also an self.print() kann es nicht liegen, da das selbe auch bei window.print() passiert
                  Aber was es sonst sein könnte, da bin ich überfragt, vielleicht habe ihr noch ne Möglichkeit oder bzw. nen Tip ??

                2. Hallo Oliver,

                  <script type='text/javascript'>
                  function go() {
                          self.print();
                  }
                  window.setTimeout("go()",10000);

                  </script>

                  Nun ist nur noch das Problem, dass sich zuerst ein Druckfenster öffnet, und wenn ich dieses schließe, dann öffnet sich genau nach 10 Sekunden das 2. Druckfenster. ich bin erst mal froh, dass es soweit schon mal geht, nun muß ich aber nur noch ne Lösung finden, wie ich es hinbekomme, das sich das erste Fenster nicht öffnet.

                  Ehrlich gesagt, das kann ich so nicht nachvollziehen. So wie das Script im Moment aussieht, müsste die Seite 10 Sekunden nach dem Öffnen ausgedruckt werden, und das wars. Von wo wird die Funktion "go" noch aufgerufen?

                  Grüße
                  Andreas

                  1. Von wo wird die Funktion "go" noch aufgerufen?

                    Die Funtion wird über einen Button, der Zugleich die Erzeugung des Barcodes vornimmt und in dem auch drinne steht onclick="javascript:go()"
                    Das ist doch okay ? Naja aber du kannst es ja mal probieren, vielleicht, kommt bei dir auch das selbe Problem. Ich weiß einfach nicht mehr weiter...

                    1. Hallo Oliver,

                      Von wo wird die Funktion "go" noch aufgerufen?

                      Die Funtion wird über einen Button, der Zugleich die Erzeugung des Barcodes vornimmt und in dem auch drinne steht onclick="javascript:go()"

                      Erstmal gehört kein "javascript:" in einen Eventhandler.

                      Im Moment wird beim Starten der Seite die Funktion setTimeout aufgerufen, die nach 10 Sekunden Go startet. Mit dem Button wird Go nochmal aufgerufen. Was Du willst ist aber:

                      onClick='window.setTimeout("go()",10000);'

                      Grüße
                      Andreas

                      1. Ich würds so machen:

                        <script type='text/javascript'>
                        function print_barcode() {
                          self.print();
                        }

                        function go() {
                          window.setTimeout("print_barcode()",10000);
                        }
                        </script>

                        und dann

                        onClick='go();'

                        Philip

                        1. Ich danke euch für eure Tatkräftige Unterstüztung auch wenn zuletzt das Script von euch beiden leider nicht funzt, da nun gar kein Druckfenster sich önnet. Ich weiß einfach nicht mehr weiter. Ich kann nur hoffen, dass du Andreas den Fehler noch irgendwie in der Zip findest die ich dir gestern zugeschickt habe. Ich danke euch aber genoch sehr für eure Unterstützung bei meinem Problem.

                          Bye

                          1. Hallo Oliver (oder Andre?),

                            Ich kann nur hoffen, dass du Andreas den Fehler noch irgendwie in der Zip findest die ich dir gestern zugeschickt habe.

                            Ich nehme an, es geht um die Datei sample.php. Darin habe ich aber weder meinen noch Philips Vorschlag (die prinzipiell das Gleiche tun) verwirklicht gesehen. Wenn diese Vorschläge nicht funktionieren, dann weiss ich leider auch nicht weiter.

                            Grüße
                            Andreas

                            1. Hallo Andreas

                              Ich nehme an, es geht um die Datei sample.php. Darin habe ich aber weder meinen noch Philips Vorschlag (die prinzipiell das Gleiche tun) verwirklicht gesehen. Wenn diese Vorschläge nicht funktionieren, dann weiss ich leider auch nicht weiter.

                              Ja in der samplle.php soll das Script mit rein. Ich konnte das Script noch nicht einfügen, da ich dir die Mail gestern morgen geschickt habe und erst heute morgen eure Nachrichten gesehen haben.

                              Übrigens meine offizieller Name ist André. Aber es wäre nett, von dir, wenn du nicht noch meinen Nachnamen hier rein postest.

                              Kannst du vielleicht mal probieren, ob die Scripte denn bei dir funzen?? Nur wenn es nicht zu viel Arbeit macht :) Weil bei mir funzt gar nix sobald ich das Script eingefügt habe. Kann es vielleicht sein das er irgendwas nicht richtig "versteht" ???

                              Naja ich warte auf deine Antwort.

                              Wenn ich es nicht schaffe heute noch mal rein zu schauen, dann wünsche ich dir jetzt schon mal ein schönes Wochenende und viel Spaß...

                              Bye sagt

                              OliverOmen

                              1. Hallo Oliver,

                                Übrigens meine offizieller Name ist André. Aber es wäre nett, von dir, wenn du nicht noch meinen Nachnamen hier rein postest.

                                Wieso sollte ich? Ich war nur etwas verwirrt, als ich deine Mail bekommen habe.

                                Kannst du vielleicht mal probieren, ob die Scripte denn bei dir funzen?? Nur wenn es nicht zu viel Arbeit macht :) Weil bei mir funzt gar nix sobald ich das Script eingefügt habe. Kann es vielleicht sein das er irgendwas nicht richtig "versteht" ???

                                Folgendes Script funktioniert. Du mußt es nur anpassen:

                                <script type='text/javascript'>
                                function test() {
                                  alert("bla");
                                }
                                function go() {
                                  window.setTimeout("test()",10000);
                                }
                                </script>
                                </head>
                                <body bgcolor="#FFFFFF">
                                <form method="post" action="sample.php">
                                  <input type="Button" name="go" value="go" onclick="go()"></form>
                                </form>

                                Dazu noch zwei Sachen:
                                1. Bei Dir fehlt das abschliessende </form>.
                                2. Du solltest <input type="button" ...> verwenden, nicht type="submit", sonst wird das Formular abgeschickt und die Datei sample.php neu geladen.

                                Wenn ich es nicht schaffe heute noch mal rein zu schauen, dann wünsche ich dir jetzt schon mal ein schönes Wochenende und viel Spaß...

                                Dir auch, danke.

                                Grüße
                                Andreas