0

アプリケーション: HTA (したがって IE) これは、SendKeys を使用して FILE 入力フィールドに入力するアプリケーションです。

問題: ファイルがアップロードされません。

説明: オフスクリーン フォーム (ユーザーには見えない) がファイルをサーバーにアップロードします。ファイル入力は、SendKeys (javascript) を介して入力されます。IE8がインストールされている場合に分離されているようです。


これの原因と回避策を知っている人はいますか?

情報不足で申し訳ありません。回答が提出されない場合は、追加情報で質問を編集します。

4

3 に答える 3

1

IE8は、セキュリティ攻撃を防ぐために、<input type="file">要素を読み取り専用に設定しました。(記事を参照)。

したがって、プログラムによる方法は不可能です。

于 2009-06-25T13:55:53.713 に答える
1

私は実際に興味深いトリックでこの問題を解決しました。方法は次のとおりです...

次のコードを含む「vbshel​​per.inc」という名前の外部 vbscript「インクルード ファイル」を作成します。

function stuffKeys(x)
    Set wshShell = CreateObject("WScript.Shell")
    wshShell.Sendkeys(x)
end function

HTML コード ヘッダー内に、次の行を最初の < Script> 要素として配置します...

<Script language="VBScript" src="vbshelper.inc">

 function defaultFldr()
    stuffKeys(" C:\Temp\*.txt~")
 end function

function do_something()
.
.
. etc
end function

</Script>

[注-1 ' C:\Temp\*.txt~' の C の前にスペースがあり、.txt の後にチルダ ( ~ ) があります。]

[注-2 Type="text/vbscript" ではなく Script type=VBScript を指定する必要がありました。なぜこれが必要なのかわかりません。]


後で、HTML コードで、次のようなボタンを作成します...

<input type="File" id="srcFile" onchange="do_something()" onclick="defaultFldr()">

[注 3: onclick コマンドから直接 stuffKeys 関数を呼び出そうとしましたが、うまくいきませんでした。おそらく、フォルダー文字列を一重引用符で囲む必要があるためです。]

つまり... HTML または HTA ページ内から WScript オブジェクトを作成することはできませんが、外部のインクルード ファイルから参照すると機能します。「vbshel​​per.inc」ファイルは、HTML または HTA ファイルと同じフォルダーに保管してください。

于 2011-04-23T00:52:54.057 に答える
0

回避策として IE8 で互換モードを使用することは可能ですか?

于 2009-06-10T04:46:22.373 に答える