应用程序:HTA(因此是 IE) 这是一个使用 SendKeys 填充 FILE 输入字段的应用程序。
问题:文件永远不会上传。
描述:屏幕外表单(用户不可见)将文件上传到服务器。文件输入是通过 SendKeys (javascript) 输入的。安装 IE8 时似乎是孤立的。
有谁知道可能导致此问题的原因以及任何解决方法?
抱歉信息不足。如果未提交答案,我将使用附加信息编辑问题。
应用程序:HTA(因此是 IE) 这是一个使用 SendKeys 填充 FILE 输入字段的应用程序。
问题:文件永远不会上传。
描述:屏幕外表单(用户不可见)将文件上传到服务器。文件输入是通过 SendKeys (javascript) 输入的。安装 IE8 时似乎是孤立的。
有谁知道可能导致此问题的原因以及任何解决方法?
抱歉信息不足。如果未提交答案,我将使用附加信息编辑问题。
IE8 已将 <input type="file"> 元素设置为只读以防止安全攻击。(见文章)。
因此,编程方式是不可能的。
我实际上用一个有趣的技巧解决了这个问题。就是这样...
创建一个名为“vbshelper.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 对象,但是当从外部包含文件引用时它可以工作。将“vbshelper.inc”文件保存在与您的 HTML 或 HTA 文件相同的文件夹中。
是否可以在 IE8 中使用兼容模式作为解决方法?