全部代码太多了,用ext写的,模拟个吧主页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<iframe  frameborder='0'  style='width:100%;height:100%;' src="a.html"> </iframe>
</body>
</html>
a.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<input type="file" id="file">
<input type="button" onclick="getUrl()">
</body>
</html>
<script type="text/javascript">
function getUrl()
{
var obj = document.getElementById("file");
obj.select();
obj.blur();
var path = document.selection.createRange().text;
alert(path);
}
</script>

解决方案 »

  1.   

    WebForm1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebForm1.aspx.cs" Inherits="WebForm1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title>WebForm1</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="divbody">
            <iframe src="WebForm2.aspx" id="ifram1" frameborder="0" ></iframe>
        </div>
        </form>
    </body>
    </html>------------------------------------------------------------
    WebForm2<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebForm2.aspx.cs" Inherits="WebForm2" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title>WebForm2</title>
    <script src="Scripts/jquery.min.js" type="text/javascript"></script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="divlayer">
            <input type="file" id="file1" />
        </div>
        </form>
        <script>
            var file = document.getElementById("file1");
            file.onchange = function () {
                file.select();
                var path = document.selection.createRange().text;
                alert(path);
            }
        </script>
    </body>
    </html>
      

  2.   

    obj.blur();也就少了一句啊,这个是ie9的,不过这样也没用啊。
      

  3.   

    OK,刚才file的名字没改为file1啊
    多谢啦,这问题昨天困扰一天啦。。哈哈
      

  4.   

    是你的obj.blur()函数的问题,这个应该是属于机制的问题
    要好好了解浏览器机制和JavaScript原理才行啊
      

  5.   

    挨,又弄了一早上,还是不行
    挂到iis上就不行了,本地的还可以
    没有obj.blur()  ie9会提示错误
    有obj.blur() 获取到的还是空值.....
    纠结了
      

  6.   

    在IE9下,document.selection.createRange()拒绝访问,看来安全性有所提高。最后测试发现,在IE9下,如果file控件获得焦点,则document.selection.createRange()拒绝访问,因此,只需要在fileImg.select()后面加一句fileImg.blur()即可。但是,如果当前页面被嵌在框架中,则fileImg.blur()之后,file控件中原本被选中的文本将会失去选中的状态,因此,不能使用fileImg.blur()。可以让当前页面上的其他元素,如div,button等获得焦点即可,如div_view.focus()。注意,如果是div,则要确保div有至少1像素的高和宽,方可获得焦点。目前在IE9中测试,一切正常。
      

  7.   

    最近有些朋友加我QQ问我这个问题的解决方法,其实也没解决。
    最后只能在iframe外面获取文件路径,然后再传入ifram里了。就是file控件放到了iframe外面了,里面确实没办法,也许我不回。cpokij说的方法没试过
      

  8.   


    cpokij的方式实际上意义不大,因为fileImg.blur()和你使其他元素获得焦点并无区别,其他元素聚焦后,fileImg也就失去焦点了。并且你的前提是没有使用iframe的情况下。
    即使使用了iframe,使用fileImg.blur()是正常的,并不会出现拒绝访问。
    我的情况有点不是很乐观,因为我不能像楼主一样将file放到父页,我只能控制子页。我再研究研究吧。
      

  9.   

    像楼上所说的如果在iframe中使用,就不能用fileImg.blur()也可以使用这样的方法 window.parent.document.body.focus();
      

  10.   

    在IE9下,document.selection.createRange()拒绝访问,看来安全性有所提高。最后测试发现,在IE9下,如果file控件获得焦点,则document.selection.createRange()拒绝访问,因此,只需要在fileImg.select()后面加一句fileImg.blur()即可。但是,如果当前页面被嵌在框架中,则fileImg.blur()之后,file控件中原本被选中的文本将会失去选中的状态,因此,不能使用fileImg.blur()。可以让当前页面上的其他元素,如div,button等获得焦点即可,如div_view.focus()。注意,如果是div,则要确保div有至少1像素的高和宽,方可获得焦点。目前在IE9中测试,一切正常。  可行
      

  11.   

    那个IIS发布之后获取不到,这个问题楼主是如何解决的?跪求解决方案
      

  12.   

    freeyears 说的没错, 这确实是可以解决 iframe中 document.selection.createRange().text 为空的问题
    function getPath(obj) {
                if (obj) {
                    if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
                        obj.select();
                        //obj.blur();在本页可以,但如果是IFrame的页面,就只能用 window.parent.focus(); 
                        window.parent.focus();
                        return document.selection.createRange().text || obj.value;
                    }
                    else {
                        return obj.value;
                    }
                }
            }
      

  13.   

    ie估计阻止了  把internet选项-安全-自定义- 将文件上载到服务器时..启动 估计就可以了
      

  14.   

    <script type="text/javascript">
    function getUrl()
    {
    var obj = document.getElementById("file");
    obj.select();
    window.top.document.body.focus();
    var path = document.selection.createRange().text;
    alert(path);
    }
    </script>
    不管有多少层iframe都有效
      

  15.   

    部署到iis 后还是不行
     var fileUpl = document.getElementById('filImport');
                                  fileUpl.select();
                                  fileUpl.blur();
                                  //window.parent.document.body.focus();
                                  var path = document.selection.createRange().text;
    path的值为空
      

  16.   

    obj.select();
    //  obj.blur();
    window.top.document.body.focus();
    //IE下取得图片的本地路径
    var s = document.selection;
    alert(s.createRange().text);
    return document.selection.createRange().text;
    还是为空!我这个一共包含了两个iframe,是孙级页面