IE8通过SendKeys导致FILE输入条目为空白

时间:2009-06-10 04:17:10

标签: javascript html internet-explorer-8 wsh hta

应用程序:HTA(因此IE)这是一个使用SendKeys填充FILE输入字段的应用程序。

问题:永远不会上传文件。

说明:屏幕外表单(用户不可见)将文件上传到服务器。通过SendKeys(javascript)输入文件输入。安装IE8时似乎被隔离。


是否有人知道可能导致此问题和解决方法的原因?

很抱歉缺少信息。如果没有提交答案,我将使用其他信息编辑问题。

3 个答案:

答案 0 :(得分:1)

IE8设置了< input type =“file”>元素为只读以防止安全攻击。 (见article)。

因此无法采用编程方式。

答案 1 :(得分:1)

我实际上用一个有趣的技巧解决了这个问题。这是怎么......

创建一个名为'vbshel​​per.inc'的外部vbscript'include文件',其中包含以下代码:

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

在HTML代码标题中,将以下行放在第一行<脚本>元件...

<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我必须指定脚本类型= VBScript而不是type =“text / vbscript”。我不确定为什么这是必需的。]


稍后,在您的HTML代码中,创建像这样的按钮......

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

[注3:我试图从onclick命令调用stuffKeys函数,但它没有用。可能是因为你必须在文件夹字符串周围使用单引号。]

所以......你不能在HTML或HTA页面中创建WScript对象,但是当从外部包含文件引用时它可以工作。将'vbshel​​per.inc'文件保存在与HTML或HTA文件相同的文件夹中。

答案 2 :(得分:0)

是否可以在IE8中使用兼容模式作为解决方法?