3

最近使用しなければならない古いWebアプリケーションに問題があります。以下を含む入力要素があります。

onClick="javascript:Run('**SomeFilePath.mdb**');"

これが行うことになっているのは、ユーザーそれぞれの.mdbファイルを開くことです。

まず、javascriptのRun関数はどこにも定義されていません。古いJavaScriptが組み込まれているのではないかと思ったのでオンラインで検索しましたが、何も見つかりませんでした。

次に、ソースコードで定義された記述された動作を実装するvbscript Run()関数がありますが、私が知る限り、javascriptはajaxを介して以外はそれを呼び出すことができません。起こっている。

奇妙な部分は、これが一部のユーザーにとって機能することです!

誰かが私がそれを感謝する理由についていくつかの光を当てることができれば!

編集:私が扱っている唯一のブラウザはIEです。私は、ファイルを開くためのactive-xの方法があることを知っています。これは、前述のvbscript Run()関数が使用している方法です。

更新:したがって、さらに調査/調査した後、IEがjavascript Run()関数を見つけられない場合、デフォルトで定義されているvbscript Run()関数になっているように見えます。ただし、これはIEの一部のバージョンでのみ発生します。誰かがこの動作を確認できますか?

研究リンク:

スクリプトを使用したIEのデフォルト方法に関するコメント

同じページで両方のスクリプトタイプを使用することに関するMSDNの記事

4

1 に答える 1

1

はい、javascriptからvbscriptを実行することも、その逆も可能です。一方の言語が他方の言語をサポートしていない場合に実行することがあります。のように指定しない場合は、スクリプトでデフォルトの言語を指定できます。

vbscript:functionname( "..")やjavascript:functionname( "..")のような関数を呼び出すときに指定することもできます

お気づきのように、ブラウザが間違った言語で関数を検索/実行したために、ブラウザが混乱して関数が見つからない場合があります。この動作はバージョンによっても影響を受けると思いますが、確かにスクリプト内のロジックの流れの順序によって影響を受けます。ブラウザが最初にjavascriptを実行する場合、疑わしい場合はこの言語でさらに進む傾向があります。だからこれを回避する

  1. 本当に必要な場合を除いて、2つを混在させないでください。vbscript関数をjavascriptに変換してください)
  2. 常にjavascriptを使用するようにしてください。vbscriptはDOMなどの処理が苦手です。
  3. それらが混在している場合は、関数を呼び出すときに正しいスクリプト言語を指定してください
  4. スクリプトタグを開くときは、またはのような正しい言語も指定してください

したがって、具体的には、問題を解決するには、vbsripts関数をjavascriptに変換し、不可能な場合は、次のように関数を呼び出します。onClick="vbscript:Run('**SomeFilePath.mdb**')"

于 2012-08-05T10:44:00.187 に答える