JCB: ActiveX Objekte in HTML

Einen wunderschönen guten Morgen :)!

Jeder von euch kennt bestimmt diese tollen Kameras, die man "einfach" ans Netz anschließen brauch und das Bild dann im Browser via ActiveX etc. betrachten kann (in diesem Fall ist ein Webserver auf dem Cam drauf). Genau so eine hab ich ;) (Veo Observer). Funktioniert alles super. Jetzt aber mein Problem: ich möchte nicht, dass ich auf den Webserver der Kamera gehen muß, um das Bild zu sehen, sondern ich möchte mich über einen anderen "richtigen" Webserver mit der Kamera verbinden. Bei anderen Kameras (ist ein anderer Hersteller) reichte es aus einfach, das ActiveX Objekt der verwendeten Kamera aus der HTML-Datei zu kopieren und in die andere einzufügen. Das gleiche hab ich wieder gemacht. Nur jetzt kommt ein Fehler den ich überhaupt nicht verstehe. Ich muß mich via JS über das ActiveXObjekt bei der Kamera anmelden. Soweit noch ok. Ich bekomm jedoch immer nur die JS-Fehlermeldung, dass das ActiveX-Objekt undefiniert ist. Bei document.getElementById kommt "...ist Null oder kein Objekt." Wie kann das denn sein, wenn in der HTML-Datei dick und fett das Objekt drin steht?? Wenn er jetzt sagen würde, er kann die Kamera nicht finden etc., aber es kommt ein JS Fehler. Den kompletten orig. JSCode der Kamera poste ich mal nicht, denn der ist ziemlich komplex und unübersichtlich.

Hier nur kurz der JS.Befehl zum einloggen:

VeoNetCamAcx.Login(location.hostname,[Port],[User],[Passwort])

location.hostname hab ich schon durch die IP der Kamera ersetzt, da ja sonst der Namen oder die IP des Webservers verwendet wird.

Und hier noch kurz das Objekt:

<object classid='clsid:0957C19A-D854-482A-A4F9-18856C723D7D' id="VeoNetCamAcx"
       codebase='XNC600NetCam.cab#version=2,0,6,4' width='320' height='240'>
        <param name='_Version' value='65536'>
        <param name='_ExtentX' value='8467'>
        <param name='_ExtentY' value='6350'>
        <param name='_StockProps' value='0'>
        XNC600NetCam ActiveX Control
        </object>

  1. Gruß,

    Jan ;)

    PS: hab ich doch glatt die Grüße vergessen ;)

  2. Hi,

    Bei document.getElementById kommt "...ist Null oder kein Objekt." Wie kann das denn sein, wenn in der HTML-Datei dick und fett das Objekt drin steht??

    Versuchst Du, getElementById aufzurufen, bevor das object existiert?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi,
      Versuchst Du, getElementById aufzurufen, bevor das object existiert?

      Moin!

      Nö, ich greif erst bei bzw. nach onLoad() darauf zu.

      Gruß,

      Jan

      1. Hi,

        Versuchst Du, getElementById aufzurufen, bevor das object existiert?
        Nö, ich greif erst bei bzw. nach onLoad() darauf zu.

        Groß-/Klein-Schreibung der id paßt zusammen?

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Groß-/Klein-Schreibung der id paßt zusammen?

          Jo. Hab die ID des Objekts markiert, kopiert und wieder eingefügt ;).

          Gruß,

          Jan

          1. Hi,

            Groß-/Klein-Schreibung der id paßt zusammen?
            Jo. Hab die ID des Objekts markiert, kopiert und wieder eingefügt ;).

            Weiterraten bringt nichts. Zeig die Seite.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Weiterraten bringt nichts. Zeig die Seite.

              Ok, du hast es so gewollt ;):

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
              <html>
              <head>
              <title>NetCam</title>
              <meta name="description" content="DDC 1055">
              <meta http-equiv="expires" content="0">

              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
              <META http-equiv="Pragma" CONTENT="no-cache">
              <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
              <meta HTTP-EQUIV="Expires" CONTENT="0">

              <script language="JavaScript" type="text/javascript">

              function doPlay()
              {
                 VeoNetCamAcx.Login(ip...,port...,user...,pw...);
              }

              </script>

              </head>

              <body bgcolor="#ffffff" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" onLoad="doPlay()">

              <span id=video style="position:absolute; left:0;top:0;z-index:1;">
                    <table border=0 width=320 height=240 cellspacing=0 cellpadding=0 >
                    <tr>
                       <td bgcolor=#ffffff style="background-image:url(logo.jpg)">
                          <span id=vid style="position:absolute; top:-1000px;">

              <object classid='clsid:0957C19A-D854-482A-A4F9-18856C723D7D' id="VeoNetCamAcx"
                     codebase='XNC600NetCam.cab#version=2,0,6,4' width='320' height='240'>
                      <param name='_Version' value='65536'>
                      <param name='_ExtentX' value='8467'>
                      <param name='_ExtentY' value='6350'>
                      <param name='_StockProps' value='0'>
                      XNC600NetCam ActiveX Control
                      </object>
                          </span>
                       </td>
                    </tr>
                    </table>
              </span>
              </body>
              </html>

              Gruß,

              Jan

              1. Hi,

                Weiterraten bringt nichts. Zeig die Seite.

                Ok, du hast es so gewollt ;):

                Nein. Ich wollte die Seite sehen, nicht deren Quellcode.

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

                Warum 4.0 und nicht 4.01?

                function doPlay()
                {
                   VeoNetCamAcx.Login(ip...,port...,user...,pw...);
                }

                Wo ist denn jetzt der Aufruf von document.getElementById?

                Nur weil im HTML irgendwo eine id vergeben ist, existiert in Javascript noch lange kein Objekt mit einem Namen, der der id entspricht (geht ja auch gar nicht, eine id kann Zeichen enthalten, die in Javascript-Namen nicht zulässig sind.

                <span id=video style="position:absolute; left:0;top:0;z-index:1;">
                      <table border=0 width=320 height=240 cellspacing=0 cellpadding=0 >

                Du hast vergessen, das span vor der Tabelle wieder zu schließen. Das end-tag von span ist nicht optional, und span darf keine table enthalten.
                Daß table kein height-Attribut kennt, ist hier auch schon oft genug gesagt worden.

                Wozu überhaupt eine Tabelle?

                <object classid='clsid:0957C19A-D854-482A-A4F9-18856C723D7D' id="VeoNetCamAcx"

                </table>
                </span>

                Zu </span> fehlt das öffnende tag.

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Schreinerei Waechter
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                1. Hi!

                  Also ich hab das ganze Gedöne mit dem Span und der Tab. mal rausgenommen, auch wenn der Span ein End-Tag hat und die Tabelle 240 pixel hoche ist ;). Mit is nämlich neu das table keine height mehr kennt. Naja. Hab auch wieder getElementById eingebaut. Hatte etwas veralteten Code kopiert. Sorry.

                  Hier noch mal der neue Code:

                  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1 Transitional//EN">
                  <html>
                  <head>
                  <title>NetCam</title>
                  <meta name="description" content="DDC 1055">
                  <meta http-equiv="expires" content="0">

                  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                  <META http-equiv="Pragma" CONTENT="no-cache">
                  <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
                  <meta HTTP-EQUIV="Expires" CONTENT="0">

                  <script language="JavaScript" type="text/javascript">

                  function doPlay()
                  {
                     document.getElementById("VeoNetCamAcx").Login(ip,port,user,pw);
                  }
                  </script>
                  </head>

                  <body bgcolor="#ffffff" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" onLoad="doPlay()">

                  <object classid='clsid:0957C19A-D854-482A-A4F9-18856C723D7D' id="VeoNetCamAcx"
                         codebase='XNC600NetCam.cab#version=2,0,6,4' width='320' height='240'>
                          <param name='_Version' value='65536'>
                          <param name='_ExtentX' value='8467'>
                          <param name='_ExtentY' value='6350'>
                          <param name='_StockProps' value='0'>
                          XNC600NetCam ActiveX Control
                          </object>
                  </body>
                  </html>

                  Und ich kann dir nur den Quellcode geben. Das ganze ist nur fürs Intranet. Sofern du jetzt mit nem Link gerechnet hattest.

                  Gruß,

                  Jan

                  1. Hi,

                    Also ich hab das ganze Gedöne mit dem Span und der Tab. mal rausgenommen, auch wenn der Span ein End-Tag hat und die Tabelle 240 pixel hoche ist ;). Mit is nämlich neu das table keine height mehr kennt.

                    table hatte nie ein height-Attribut.

                    Naja. Hab auch wieder getElementById eingebaut. Hatte etwas veralteten Code kopiert. Sorry.

                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1 Transitional//EN">

                    HTML 4.1 gibt es nicht.

                    function doPlay()
                    {
                       document.getElementById("VeoNetCamAcx").Login(ip,port,user,pw);
                    }

                    Nach Definition der 4 Variablen ip, … pw bekomme ich document.getElementById("VeoNetCamAcx").Login is not a function.
                    Das object wird also einwandfrei gefunden.

                    (aber da mein Browser kein ActiveX kennt, kann auch die Funktion Login in diesem object bei mir nicht existieren)

                    cu,
                    Andreas

                    --
                    Warum nennt sich Andreas hier MudGuard?
                    Schreinerei Waechter
                    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                    1. Moin!

                      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1 Transitional//EN">

                      HTML 4.1 gibt es nicht.

                      dann halt 4.01 ;). hatte ich auch erst geändert nachdem du gemeckert hattest ;).

                      function doPlay()
                      {
                         document.getElementById("VeoNetCamAcx").Login(ip,port,user,pw);
                      }

                      Nach Definition der 4 Variablen ip, … pw bekomme ich document.getElementById("VeoNetCamAcx").Login is not a function.
                      Das object wird also einwandfrei gefunden.

                      (aber da mein Browser kein ActiveX kennt, kann auch die Funktion Login in diesem object bei mir nicht existieren)

                      Hm, muß das Objekt nicht inst. sein, um darauf zugreifen zu können? Btw, welchen Browser benutzt du? Ich hab hier den IE6.0.

                      Gruß,

                      Jan

                      1. Hi,

                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1 Transitional//EN">
                        HTML 4.1 gibt es nicht.
                        dann halt 4.01 ;). hatte ich auch erst geändert nachdem du gemeckert hattest ;).

                        Aber von 4.1 hab ich nichts gesagt.

                        (aber da mein Browser kein ActiveX kennt, kann auch die Funktion Login in diesem object bei mir nicht existieren)
                        Hm, muß das Objekt nicht inst. sein, um darauf zugreifen zu können?

                        institutionalisiert?
                        instruiert?
                        installiert? das könnte passen. Natürlich muß das ActiveX installiert sein, um es benutzen zu können.
                        Auf das HTML-Element kann aber zugegriffen werden, auch wenn der Browser keinerlei ActiveX kennt.

                        Btw, welchen Browser benutzt du? Ich hab hier den IE6.0.

                        Ich benutz keinen Uralt-Browser. Ich benutze Firefox.

                        cu,
                        Andreas

                        --
                        Warum nennt sich Andreas hier MudGuard?
                        Schreinerei Waechter
                        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                        1. Hi,

                          Aber von 4.1 hab ich nichts gesagt.

                          Ja, das war ein Fehler meinerseits ;oP.

                          (aber da mein Browser kein ActiveX kennt, kann auch die Funktion Login in diesem object bei mir nicht existieren)
                          Hm, muß das Objekt nicht inst. sein, um darauf zugreifen zu können?

                          institutionalisiert?
                          instruiert?
                          installiert? das könnte passen.

                          achja, was wäre ein Mensch ohne Phantasie *gg*

                          Natürlich muß das ActiveX installiert sein, um es benutzen zu können.

                          Auf das HTML-Element kann aber zugegriffen werden, auch wenn der Browser keinerlei ActiveX kennt.

                          Tja, ich kann weder darauf zugreifen wenn das dingen inst.(alliert) noch nicht inst.(atlliert) ist.

                          Btw, welchen Browser benutzt du? Ich hab hier den IE6.0.

                          Ich benutz keinen Uralt-Browser. Ich benutze Firefox.

                          Jaja, auch wenn alle über den IE meckern: ich hab damit weniger Probleme als mit den anderen Browsern!! Naja, wollen wir das jetzt aber nicht in einen endlose Browserdiskussion verfallen lassen ;).

                          Gruß, Jan

                          1. Hallo,

                            Jaja, auch wenn alle über den IE meckern: ich hab damit weniger Probleme als mit den anderen Browsern!!

                            Geht mir auch so...  '-)

                            Martin

                        2. Nochmal Hi!

                          (aber da mein Browser kein ActiveX kennt, kann auch die Funktion Login in diesem object bei mir nicht existieren)

                          Ich hab den Firefox jetzt auch mal ausprobiert und bekommt jetzt die Meldung "Login is not a function". Sagt Dir das irgendwas??

                          Gruß, Jan

                          1. hi,

                            (aber da mein Browser kein ActiveX kennt, kann auch die Funktion Login in diesem object bei mir nicht existieren)

                            Ich hab den Firefox jetzt auch mal ausprobiert und bekommt jetzt die Meldung "Login is not a function". Sagt Dir das irgendwas??

                            na klar sagt uns das was - du warst in der lage, das von Andreas geschilderte problem, welches in einem browser, der kein active-x unterstützt, auftritt, unter replizierung der relevanten teile seiner testumgebung nachzustellen.

                            'nen lolli als belohnung gibt's dafür aber leider nicht, weil das nach Andreas posting jedem aufmerksamen mitleser eh schon klar gewesen sein sollte.

                            scnr,
                            wahsaga

                            --
                            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                            1. Moin!

                              na klar sagt uns das was - du warst in der lage, das von Andreas geschilderte problem, welches in einem browser, der kein active-x unterstützt, auftritt, unter replizierung der relevanten teile seiner testumgebung nachzustellen.

                              'nen lolli als belohnung gibt's dafür aber leider nicht, weil das nach Andreas posting jedem aufmerksamen mitleser eh schon klar gewesen sein sollte.

                              Ja sorry, ich hatte irgendwie in Erinnerung, dass er ne andere Fehlermeldung hatte. Btw, von mir aus kriegst _DU_ nen Lolli wenn du mein Problem löst :o)!

                              Gruß,

                              Jan

                              1. hi,

                                Btw, von mir aus kriegst _DU_ nen Lolli wenn du mein Problem löst :o)!

                                zum einen bin ich aus dem alter raus, wo ich so einfach zu bestechen war, und zum anderen hat für mich bisher noch keinerlei notwendigkeit bestanden, active-x einzusetzen und mich deswegen damit intensiver zu beschäftigen.
                                was active-x angeht, bin ich also lediglich einer der benutzer, die ständig von den diesbezüglichen warnmeldungen des IE genervt werden (so ich denn gezwungen bin, diesen mal zu verwenden).

                                gruß,
                                wahsaga

                                --
                                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                                1. Hi!

                                  zum einen bin ich aus dem alter raus, wo ich so einfach zu bestechen war, und zum anderen hat für mich bisher noch keinerlei notwendigkeit bestanden, active-x einzusetzen und mich deswegen damit intensiver zu beschäftigen.
                                  was active-x angeht, bin ich also lediglich einer der benutzer, die ständig von den diesbezüglichen warnmeldungen des IE genervt werden (so ich denn gezwungen bin, diesen mal zu verwenden).

                                  Ich hab mit ActiveX auch nich soviel am Hut, deshalb frag ich ja. Desweiteren würde ich Dich doch nie mit einem einfachen Lolli bestechen wollen. Damit würde ich ja nicht nur Dich, sondern auch mich beleidigen ;). Es wäre lediglich eine kleine Anerkennung Deiner (leider nicht vorhandenen) ActiveX Kenntnisse gewesen ;).

                                  Gruß,

                                  Jan

          2. Hallo Jan,

            vielleicht kommt dir meine Frage jetzt "dumm" vor, aber...

            Jo. Hab die ID des Objekts markiert, kopiert und wieder eingefügt ;).

            und du hast das ActiveX-Control auch auf dem Rechner installiert, auf dem du die Seite aufrufen willst? Auf meiner Maschine (Windows 2000, IE6) gibt es nämlich kein Objekt mit der angegebenen GUID.

            Denn wenn du ein ActiveX-Control verwenden willst, muss es auch auf dem Client-PC installiert sein. Wenn du dieselbe Seite auf einem anderen PC aufrufst, wo möglicherweise auch die als codebase angegebene Ressource nicht verfügbar ist...?
              -> Pech für die Kuh Elsa.  ;)

            So long,

            Martin

  3. Tag JCB.

    Da sich ja nun herausgestellt hat, dass dein Objekt keine Eigenschaft login hat (die es aber bei korrekter Implementierung haben muss), müsste man das Problem erstmal einkreisen. Zunächst wäre zu klären, ob das ActiveX-Control überhaupt installiert ist, relativ einfach daran zu erkennen, dass ein entsprechend konfigurierter IE um Erlaubnis fragt. Sollte dies der Fall sein, solltest du im nächsten Schritt prüfen, welche Eigenschaften das Objekt dir überhaupt zur Verfügung stellt, wie es gehen könnte, siehst du an diesem Beispiel. Und schließlich und endlich solltest du dir mal EyeSpyFX Veo anschauen, welches angeblich Probleme bei der Webveröffentlichung deiner Kamerabilder lösen können soll.

    Siechfred

    --
    «Ich liebe euch doch alle!»