代码之家  ›  专栏  ›  技术社区  ›  TJR

IE8通过sendkeys使文件输入项为空

  •  0
  • TJR  · 技术社区  · 15 年前

    应用 :hta(因此ie)这是一个使用sendkeys填充文件输入字段的应用程序。

    问题 :从未上载文件。

    描述 :屏幕外窗体(用户不可见)将文件上载到服务器。文件输入通过sendkeys(javascript)输入。似乎与安装IE8时隔离。


    有人知道这可能是什么原因以及任何解决办法吗?

    抱歉,信息不全。如果未提交答案,我将用附加信息编辑问题。

    3 回复  |  直到 12 年前
        1
  •  1
  •   TJR    15 年前

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

    因此,一个程序化的方法是不可能的。

        2
  •  1
  •   robert    12 年前

    我实际上用一个有趣的技巧解决了这个问题。以下是如何…

    创建一个名为“vbshelper.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:我必须指定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文件保存在同一文件夹中。

        3
  •  0
  •   jasonh    15 年前

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