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 我必须指定 Script type=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 文件相同的文件夹中。

于 2011-04-23T00:52:54.057 回答
0

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

于 2009-06-10T04:46:22.373 回答