Gakkus: Print Inhalt von ActiveX Object - IE

Hallo,

ich habe in einer HTML-Seite ein ActiveX Objekt eingebunden und navigiere zur einer Seite. Danach möchte ich einen Druck des Inhalts des Objektes erzeugen:

<html>  
	<body>  
		<SCRIPT LANGUAGE="JavaScript">  
			document.write("<OBJECT ID='wb' WIDTH=500 HEIGHT=500 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></OBJECT>");  
			wb.Navigate ("http://www.google.de");  
			function print(){  
			wb.ExecWB(6,-1);	  
			}	  
		</SCRIPT>  
        <input type="button" onClick="print();" value="print">  
	</body>  
</html>

Sobald ich den Druck-Button betätige, bekomme ich die Fehlermeldung: "Zugriff verweigert". Dabei habe ich alle Sicherheitseinstellungen im IE auf das niedrigste Level gesetzt- manuell. D.h. alle ActiceX Sicherheitsbelange deaktiviert...

Danke und Gruss
Gallus

  1. Lieber Gakkus,

      <SCRIPT LANGUAGE="JavaScript">  
    

    das "language"-Attribut kannste knicken. Du brauchst das type-Attribut!

      	function print(){  
      	wb.ExecWB(6,-1);	  
      	}	  
    

    JavaScript kennt bereits eine Funktion window.print(). Wenn Du Deine eigene Funktion keinem anderen Objekt als Methode gibst, wird Deine Funktion automatisch eine Methode des window-Objektes. Aber window.print ist schon vorhanden - und deswegen gibt es wohl Ärger.

    Was machen eigentlich Besucher mit einem anderen Browser? Müssen die unbedingt ActiveX-Objekte zulassen, nur weil Du das gut findest?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Vielen Dank für die Info. Das ganze ist nur für das Intranet gedacht und hier wird nur der IE eingesetzt.

      Klar die print()-Methode von JS ist mir bekannt. Jedoch möchte ich eben nur den Inhalt des eingebetteten Objekt ausdrucken. Der Rest soll nicht ausgedruckt werden. Habe gerade auch mal anstatt wb.ExecWB(6,-1);die Print-Methode genutzt window.print(); .
      Bekam hier eine Meldung: "Stack overflow at line: 7"(print-methode).

      Gruss
      Gallus

      1. Hi,

        Habe gerade auch mal anstatt wb.ExecWB(6,-1);die Print-Methode genutzt window.print(); .

        Ohne diese vorher zu überschreiben, wie in deinem ursprünglichen Beispiel?

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Nein, habe einfach nur ersetzt:

          <html>  
                  <body>  
                          <SCRIPT LANGUAGE="JavaScript">  
                                  document.write("<OBJECT ID='wb' WIDTH=500 HEIGHT=500 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></OBJECT>");  
                                  wb.Navigate ("http://www.google.de");  
                                  function print(){  
                                  window.print();  
                                  //wb.ExecWB(6,-1);  
                                  }  
                          </SCRIPT>  
                  <input type="button" onClick="print();" value="print">  
                  </body>  
          </html>
          
          1. Lieber Gakkus,

            function print(){
                                    window.print();
                                    //wb.ExecWB(6,-1);
                                    }

            das ist ganz besonderer Käse! Die Definition einer Funktion "print" ist doch dasselbe wie die Definition einer Funktion "window.print"! Hast Du meine Antwort so oberflächlich gelesen?? Kein Wunder, dass da ein Stack überfließt, denn die Funktion tut nun nichts anderes, als sich selbst aufzurufen.

            Ich übersetze es Dir einmal in noch einfacheren Code:

            window.print = function () {  
                window.print(); // ich rufe mich selbst auf (->Stack Overflow Error!)  
            }
            

            Siehst Du nun, was für einen besonderen Käse Du da fabriziert hast? Und ja, Dein Code ist mit meinem absolut identisch, denn ob ich nur "print" oder "window.print" schreibe, läuft - wie ich bereits ausgeführt hatte - auf dasselbe hinaus!

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Naja, wie auch immer..Auch wenn ich die Methode nun richtig anwende, bekomme ich auch hier die Fehlermeldung: "Erlaubnis verweigert". Und wir sind wieder bei der Ausgangsposition:

              <html>  
                      <body>  
                              <SCRIPT LANGUAGE="JavaScript">  
                                      document.write("<OBJECT ID='wb' WIDTH=500 HEIGHT=500 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></OBJECT>");  
                                      wb.Navigate ("http://www.google.de");  
                                      function printme(){  
                                      wb.ExecWB(6,-1);  
                                      }  
                              </SCRIPT>  
                      <input type="button" onClick="printme();" value="print">  
                      </body>  
              </html>
              

              Gruss
              Gallus

              1. Hello,

                wb.ExecWB(6,-1);

                klingt so, also würdest du an einer Same-Origin-Policy in ActiveX-Form scheitern. Hast du mal die Referenz von ExecWB studiert? Da stehen ein paar Security-Flags, vielleicht helfen die weiter?

                MfG
                Rouven

                --
                -------------------
                sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
                Friendships are a lot like a backyard garden. We plan to tend to them, but we just always seem to put it off until next week. --  Christian Clemenson as Jerry Espenson in Boston Legal: "Patriot Acts"
    2. JavaScript kennt bereits eine Funktion window.print().

      Uund wie willst du auf das window-Objekt des Dokuments zugreifen, das gedruckt werden soll?

      Wenn Du Deine eigene Funktion keinem anderen Objekt als Methode gibst, wird Deine Funktion automatisch eine Methode des window-Objektes. Aber window.print ist schon vorhanden - und deswegen gibt es wohl Ärger.

      Wieso? Ich kann doch in einem Dokument window.print überschreiben, deshalb sollte doch in einem anderen eingebetteten Dokument alles funktionieren.

      Mathias

  2. Sobald ich den Druck-Button betätige, bekomme ich die Fehlermeldung: "Zugriff verweigert". Dabei habe ich alle Sicherheitseinstellungen im IE auf das niedrigste Level gesetzt- manuell. D.h. alle ActiceX Sicherheitsbelange deaktiviert...

    Ich fürchte, da wirst du auch nicht weiterkommen wegen der Same-Origin-Policy. Versuche mal, ein Dokument vom gleichen Webserver einzubinden anstatt eine fremde URI.

    Mathias