agnieszka
agnieszka

Reputation: 15355

javascript: "Object doesn't support this property or method" when ActiveX object called

I've got simple html on Login.aspx with an ActiveX object:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head><title></title>
<script language="javaScript" type="text/javascript"> 

    function getUserInfo() 
    {
        var userInfo = MyActiveX.GetInfo();
        form1.info.value = userInfo;
        form1.submit();
    }

</script>
</head>

<body onload="javascript:getUserInfo()">
<object id="MyActiveX" name="MyActiveX" codebase="MyActiveX.cab" classid="CLSID:C63E6630-047E-4C31-H457-425C8412JAI25"></object>
    <form name="form1" method="post" action="Login.aspx">
        <input type="hidden" id="info" name="info" value="" />
    </form>
</body>
</html>

The code works perfectly fine on my machine (edit: hosted and run), it does't work on the other: there is an error "Object doesn't support this property or method" in the first line of javascript function. The cab file is in the same folder as the page file. I don't know javascript at all and have no idea why is the problem occuring. Googling didn't help. Do you ave any idea?

Edit: on both machines IE was used and activex was enabled.

Edit2: I also added if (document.MyActiveX) at the beggining of the function and I still get error in the same line of code - I mean it looks like document.MyActiveX is true but calling the method still fails

Upvotes: 5

Views: 16066

Answers (5)

Oleg Kalenbet
Oleg Kalenbet

Reputation: 648

IE8 manages access to the ActiveX on domain level.

To fix it:

  1. IE8, Tools -> Manage Add-ons
  2. In "Toolbars and Extensions" find your ActiveX
  3. Right click - More information
  4. Click - Allow on all sites
  5. Enjoy

Upvotes: 2

erikkallen
erikkallen

Reputation: 34421

Maybe the other machine has a virus scanner or similar which silently prevents ActiveX use?

Upvotes: 0

Nirmal
Nirmal

Reputation: 9549

I think the onload event is making the function to run even before the ActiveX object is loaded. You may try the following instead:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title></title>
        <script language="javaScript" type="text/javascript">
            function getUserInfo(){
                if(document.MyActiveX){
                    var userInfo = MyActiveX.GetInfo();
                    form1.info.value = userInfo;
                    form1.submit();
                }
            }
        </script>
    </head>
    <body>
        <object id="MyActiveX" name="MyActiveX" codebase="MyActiveX.cab" classid="CLSID:C63E6630-047E-4C31-H457-425C8412JAI25"></object>
        <script for="window" event="onload" language="JavaScript">
            window.setTimeout("getUserInfo()", 500);
        </script>

        <form name="form1" method="post" action="Login.aspx">
            <input type="hidden" id="info" name="info" value="" />
        </form>
    </body>
</html>

Now the getUserInfo() function will start to run 500 milliseconds after the page is loaded. This must give some time for the ActiveX object to be loaded.

Upvotes: 2

Shay Erlichmen
Shay Erlichmen

Reputation: 31928

Maybe the ActiveX needs some prerequisite (For example CRuntime) that isn't present on the other machines? Have you tried running depends for the Activex on the hosting machine?

Upvotes: 0

Khodor
Khodor

Reputation: 1006

maybe the browser on the other machine does not support activeX? just a wild guess

Upvotes: 0

Related Questions