2009-06-10 7 views
0

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

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

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


この問題やその他の回避策の原因は誰にも分かりますか?

ご迷惑をおかけして申し訳ありません。回答が提出されない場合は、追加の情報で質問を編集します。

+0

SendKeysの使い方についてコメントする必要はありません。私のコードではありません。 – TJR

答えて

1

IE8は、入力タイプ= "ファイル" >を>に設定して、セキュリティ攻撃を防止するために読み取り専用に設定しています。 (article参照)。

したがって、プログラム的な方法はできません。

0

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

+0

残念ながら、読み取り専用属性は互換モードの影響を受けません。 – TJR

1

私は実際に興味深いトリックでこの問題を解決しました。次の行を置き、あなたのHTMLコードヘッダ内

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

:ここ

は、次のコードが含まれている「vbshel​​per.inc」と呼ばれる外部のVBScript「ファイルを含める」を作成する方法...ですあなたの最初の<スクリプト>要素...

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

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

function do_something() 
. 
. 
. etc 
end function 

</Script> 

[注1におけるCの前にスペースがあります 'C:\ Tempに\ * TXT〜。' と.txtの後にチルダ(〜)が。 ]

[注2]スクリプトタイプ= VBScriptを指定し、タイプ= "text/vbscript"ではありませんでした。これが必要な理由は私はわからない]


後に、あなたのHTMLコードで、このようなボタンを作成...

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

[注意-3:私は呼び出そうとしましたstuffKeysはonclickコマンドから機能しますが、機能しませんでした。おそらく、あなたはフォルダ文字列を一重引用符で囲む必要があるからです。]

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

+0

http://pastebin.comにコードを投稿してもらえますか – TJR

+0

これは将来の証明ではありません(IEの変更が読み取り専用になるのはXSS攻撃から保護するためです)。見つかったループホールは、将来パッチが適用される可能性があります。また、javascript:alert(window.navigator.userAgent)を投稿することもできます。 – TJR

関連する問題