2009-09-22 7 views
5

私は、ActiveXオブジェクトにLogin.aspxの上の単純なHTMLを持っている:のjavascript:ActiveXオブジェクトと呼ばれる「オブジェクトはこのプロパティまたはメソッドをサポートしていませんが、」

<!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> 

は、コードは私のマシン上で完全に正常に動作します(編集:ホストされ、実行)、それは他の上で動作しません:JavaScript関数の最初の行に "オブジェクトはこのプロパティまたはメソッドをサポートしていません"というエラーがあります。 cabファイルは、ページファイルと同じフォルダにあります。私はJavaScriptを全く知らず、なぜ問題が発生しているのか分からない。グーグルは助けにはならなかった。あなたは何か考えていますか?

編集:両方のマシンでIEが使用され、ActiveXが有効になっています。

Edit2:関数の先頭に(document.MyActiveX)が追加されていて、同じコード行にエラーが残っています。つまり、document.MyActiveXはtrueですが、メソッドを呼び出すのに失敗します。

+0

あなたが失敗しているマシンでActiveXが有効になっていますか?ゾーンは重要(ローカル、イントラネット、インターネット)であり、異なるセキュリティ特性を持つことに注意してください。ローカルのイントラネットゾーンには、通常、デフォルトでActiveXがオフになっています。 –

+0

すべてをチェックしました - すべてのゾーンにactivexが有効になっているすべてがあります – agnieszka

+0

ここで同じ問題が発生しました。同じページはIE7では動作しますが、IE8では動作しません。 –

答えて

0

他のマシンのブラウザがactiveXをサポートしていない可能性がありますか?ただの野生の推測

+0

nope。 ActiveXを有効にした場合 – agnieszka

2

私はonloadイベントは、ActiveXオブジェクトがロードされる前に実行する関数を作っていると思う。

<!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> 

ここで、getUserInfo()関数は、ページが読み込まれてから500ミリ秒後に実行を開始します。これは、ActiveXオブジェクトがロードされるのに時間が必要です。

+0

ほとんどの場合、ActiveXのインストールはブラウザによってブロックされています。 IEを使用している場合は、オブジェクトをインストールするかどうかを確認する黄色の警告バーが表示されます。ユーザーの同意の後にのみ、オブジェクトがインストールされます。オブジェクトがロードされていない場合、オブジェクトを扱う関数は、必要なオブジェクトがロードされているかどうかをチェックする必要があります。そして、ねえ、すべてのActiveXオブジェクトがすべてのマシンにプリロードされているわけではありません。 – Nirmal

+0

アラートバーはありません。単なるエラー – agnieszka

+0

ドキュメントが読み込まれるとすぐに関数を呼び出すので、ActiveXオブジェクトがロードされる前でも関数が実行される可能性があります。私の編集された答えを参照してください。 – Nirmal

0

ActiveXには、他のコンピュータに存在しないいくつかの前提条件(たとえばCRuntimeなど)が必要なのでしょうか?あなたは、ホストマシン上のActivexにdependsを実行しようとしましたか?

0

おそらく、他のマシンには、ActiveXの使用を警告しないウイルススキャナなどがありますか?

2

IE8は、ドメインレベルのActiveXへのアクセスを管理します。

それを修正するには、次の

  1. IE8は、ツール - 詳細
  2. クリック - - >アドオン
  3. の "ツールバーと拡張機能は、" あなたのActiveX
  4. 右クリックを見つけるには管理上の許可すべてのサイト
  5. お楽しみください