IE8 通过 SendKeys 导致 FILE 输入条目为空
-
13-09-2019 - |
题
应用: :HTA(因此 IE) 这是一个使用 SendKeys 填充 FILE 输入字段的应用程序。
问题: :文件从未上传。
描述: :屏幕外表单(用户不可见)将文件上传到服务器。文件输入是通过 SendKeys (javascript) 输入的。安装 IE8 时似乎被隔离。
有谁知道可能导致此问题的原因以及任何解决方法?
抱歉,缺乏信息。如果没有提交答案,我将使用附加信息编辑问题。
解决方案
IE8已经设置了元素为只读,以防止安全攻击。 (见文章)。
因此以编程的方式是不可能的。
其他提示
我实际上用一个有趣的技巧解决了这个问题。就是这样...
创建一个名为“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: emp\*.txt~' 中的 C 之前有一个空格,.txt 后面有一个波形符 ( ~ )。]
[Note-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作为一个变通?
不隶属于 StackOverflow