您好,欢迎访问一九零五行业门户网

JS+ACTIVEX实现网页选择本地目录路径对话框_javascript技巧

网页选择本地目录路径对话框,使用activex对象遍历本地磁盘和目录,只需网页启用相关activex的internet选项,对本地浏览器的安全性要求不高,简单易用。
网页选择本地目录路径对话框样例
1.打开主页面select.html,点击“选择路径”按钮进入路径选择页面“dir.html”,选取本地目录路径
2.路径选择页面“dir.html”初始化后,加载本地磁盘驱动,然后根据选择的磁盘路径加载其中的目录。如目录中存在子目录,双击该目录列表项进入下一集目录。
3.点击“确定”,关闭选择路径页面dir.html,将选择的路径值返回到主页面select.html文本框上
复制代码 代码如下:
/**//*
*初始化,将系统所有的驱动器放入table_drives列表
*/
window.onload = new function init()
{
var fso, s, n, e, x;
fso = new activexobject(scripting.filesystemobject);
e = new enumerator(fso.drives);
s = ;
for (; !e.atend(); e.movenext())
{
x = e.item();
s = s + x.driveletter;
s += :;
if (x.drivetype == 3)
n = x.sharename;
else if (x.isready)
n = x.volumename;
else
n = [驱动器未就绪];
s += n + ,;
}
var drives = s.split(,);
var tabledrives = document.getelementbyid(tables_drives);
for ( var i = 0; i {
var option = document.createelement(option);
drives[i].split(:);
option.value = [+drives[i].split(:)[0]+:]+drives[i].split(:)[1];
option.text = [+drives[i].split(:)[0]+:]+drives[i].split(:)[1];
tabledrives.add(option);
}
get_drives();
}
/**//*
*tables_drives列表中选中的驱动器上所有文件夹放入table_folder列表中
*/
function get_drives()
{
var tabledrives = document.getelementbyid(tables_drives);
var tablefolders = document.getelementbyid(table_folder);
for ( var i = 0; i {
if ( tabledrives.options[i].selected == true )
{
var fso, f, fc, s;
var drive = tabledrives.options[i].value.split(:)[0].substring(1,tabledrives.options[i].value.split(:)[0].length);
document.getelementbyid(backdir).value = drive + :\\;
fso = new activexobject(scripting.filesystemobject);
if (fso.driveexists(drive))
{
d = fso.getdrive(drive);
if ( d.isready )
{
f = fso.getfolder(d.rootfolder);
fc = new enumerator(f.subfolders);
s = ;
for (;!fc.atend(); fc.movenext())
{
s += fc.item();
s += ,;
}
var len = tablefolders.options.length;
while(len >= 0)
{
tablefolders.options.remove(len);
len--;
}
var option = document.createelement(option);
option.value = drive + :\\;
option.text = drive + :\\;
tablefolders.add(option);
var folders = s.split(,);
for ( j = 0; j {
option = document.createelement(option);
option.value = folders[j];
option.text = folders[j];
tablefolders.add(option);
}
}
else
{
alert(无法改变当前内容!)
}
}
else
return false;
}
}
}
function get_filename()
{
var tablefolders = document.getelementbyid(table_folder);
for ( var i = 0; i {
if ( tablefolders.options[i].selected == true )
{
var folderpath = tablefolders.options[i].value.substring(0,tablefolders.options[i].value.length);
if ( folderpath.charat(folderpath.length-1) == \\ )
{
document.getelementbyid(backdir).value = folderpath;
}
else
{
document.getelementbyid(backdir).value = folderpath + \\;
}
}
}
}
/**//*
*table_folder双击选项中的一个选项,就将该文件夹下面的文件夹显示在table_folder列表中。
*/
function get_file()
{
var tablefolders = document.getelementbyid(table_folder);
var tabledrives = document.getelementbyid(tables_drives);
for ( var i = 0; i {
if ( tablefolders.options[i].selected == true )
{
var fso, f, fc, s;
var folderpath = tablefolders.options[i].value.substring(0,tablefolders.options[i].value.length);
if ( folderpath.charat(folderpath.length-1) == \\ )
{
document.getelementbyid(backdir).value = folderpath;
}
else
{
document.getelementbyid(backdir).value = folderpath + \\;
}
fso = new activexobject(scripting.filesystemobject);
f = fso.getfolder(folderpath);
fc = new enumerator(f.subfolders);
s = ;
for (;!fc.atend(); fc.movenext())
{
s += fc.item();
s += ,;
}
var len = tablefolders.options.length;
while(len >= 0)
{
tablefolders.options.remove(len);
len--;
}
var opt = ;
var opt1 = ;
for ( j = 0; j {
var option = document.createelement(option);
opt = opt + folderpath.split(\\)[j]+\\;
if ( j > 0)
{
opt1 = opt;
option.value = opt1.substring(0,opt1.length-1);
option.text = opt1.substring(0,opt1.length-1);
tablefolders.add(option);
}
else
{
option.value = opt;
option.text = opt;
tablefolders.add(option);
}
}
if ( tablefolders.options[0].value == tablefolders.options[1].value )
{
tablefolders.options.remove(1);
}
if ( s != )
{
var folders = s.split(,);
for ( j = 0; j {
option = document.createelement(option);
option.value = folders[j];
option.text = folders[j];
tablefolders.add(option);
}
}
}
}
}
其它类似信息

推荐信息