Javascript 폴더 선택을 위한 두 가지 솔루션 box_javascript 기술

WBOY
풀어 주다: 2016-05-16 18:50:56
원래의
1016명이 탐색했습니다.
해결책 1:
Windows 셸을 호출하면 보안 문제가 발생합니다.

* browserFolder.js
* 이 파일은 다음을 제공하는 BrowseFolder() 함수를 정의합니다. 사용자가 시스템 폴더 선택 기능을 구현하기 위한 폴더 선택 대화 상자
*
* 폴더 선택 대화 상자의 시작 디렉터리는
* Shell.BrowseForFolder(WINDOW_HANDLE, Message, OPTIONS, strPath에 의해 결정됩니다. ) 함수
*
*의 strPath 매개변수 설정 예: 0x11--내 컴퓨터
* 0 --Desktop
* "c:\"--시스템 C 드라이브
*
* 이 기능을 HTML 파일에 적용하려면 다음 코드를 사용하세요.
*
* 또는 다음 코드를 ... tag;

* 보안 문제로 인해 이 JS 코드를 올바르게 실행하려면 다음 설정도 필요합니다.
* 그렇지 않으면 "권한 없음" 문제가 발생합니다.
*
* 1. 신뢰할 수 있는 사이트를 설정합니다(예: 로컬 사이트는 http://localhost일 수 있음).
* 2. 둘째: 신뢰할 수 있는 사이트 보안 수준의 사용자 정의 설정에서 다음 옵션을 설정합니다.
* "안전한 것으로 표시되지 않은 ActiveX 컨트롤 초기화 및 스크립트 실행"----"활성화"

browserFolder.js:
코드 복사 코드는 다음과 같습니다.

/**//***
path 값을 표시할 객체 ID
****/
function browserFolder(path) {
try {
var Message = "u8bf7u9009u62e9u6587u4ef6u5939"; //선택 상자 프롬프트 메시지
var Shell = new ActiveXObject("Shell.Application");
var Folder = Shell.BrowseForFolder(0, Message, 64, 17); //시작 디렉터리는 내 컴퓨터입니다.
//var Folder = Shell.BrowseForFolder(0,Message,0); 시작 디렉토리는 :Desktop
if (Folder != null) {
Folder = Folder.items(); // FolderItems 객체 반환
Folder = Folder.item(); // Folderitem 객체 반환
Folder = Folder.Path; // 반환 경로
if (Folder.charAt(Folder.length - 1) != "\") {
Folder = 폴더 "\"
} document.getElementById(경로).value = 폴더;
return Folder;
}
}
catch(e) {
alert(e.message)
}


사용시 :


< ;td>


<입력 유형= "button" onclick= "browseFolder('path')"
value="생성 경로 선택" />


2. 🎜>직접 작성하세요. js는 로컬 하드 디스크의 선택 상자를 읽습니다. 단점은 이전보다 모양이 나빠진다는 것입니다.



코드 복사.
코드는 다음과 같습니다.



无标题文档

<본문>





















<스크립트>
/**//*
* 초기화, 시스템의 모든 드라이브를 table_drives 목록에 넣습니다
*/
window.onload = 새 함수 init()
{
var fso, s, n, e, x;
fso = new ActiveXObject("Scripting.FileSystemObject");
e = 새 열거자(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 드라이브 = s.split(",");
var tableDrives = document.getElementById("tables_drives");
for ( var i = 0; i {
var option = document.createElement("OPTION");
드라이브[i].split(":");
option.value = "[" 드라이브[i].split(":")[0] ":]" 드라이브[i].split(":")[1];
option.text = "[" 드라이브[i].split(":")[0] ":]" 드라이브[i].split(":")[1];
tableDrives.add(옵션);
}
}

/**//*
*tables_drives 목록에서 선택한 드라이브의 모든 폴더는 table_folder 목록에 배치됩니다.
*/
function get_drives()
{
var tableDrives = document.getElementById("tables_drives");
var tableFolders = document.getElementById("table_folder");
for ( var i = 0; i < tableDrives.options.length; i )
{
if ( tableDrives.options[i].selected == true )
{
var fso, f, fc, s;
var 드라이브 = tableDrives.options[i].value.split(":")[0].substring(1,tableDrives.options[i].value.split(":")[0].length) ;
document.getElementById("backDir").value = 드라이브 ":\";
fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.DriveExists(드라이브))
{
d = fso.GetDrive(드라이브);
if ( d.IsReady )
{
f = fso.GetFolder(d.RootFolder);
fc = 새 열거자(f.SubFolders);
s = "";
for (;!fc.atEnd(); fc.moveNext())
{
s = fc.item();
s = ",";
}

var len = tableFolders.options.length;
while(len >= 0)
{
tableFolders.options.remove(len);
렌--;
}
var option = document.createElement("OPTION");
option.value = 드라이브 ":\";
option.text = 드라이브 ":\";
tableFolders.add(옵션);
var 폴더 = s.split(",");
for ( j = 0; j {
option = document.createElement("OPTION");
옵션.값 = 폴더[j];
option.text = 폴더[j];
tableFolders.add(옵션);
}
}
else
{
alert("无法改变当前内容!")
}
}
else
false를 반환합니다.
}
}
}

/**//*
*table_folder双击选项中的一个选项,就将该文件夹下面的文件夹显示在table_folder列表中。
*/
function get_file()
{
var tableFolders = document.getElementById("table_folder");
var tableDrives = document.getElementById("tables_drives");
for ( var i = 0; i < tableFolders.options.length; i )
{
if ( tableFolders.options[i].selected == true )
{
var fso, f, fc, s;
var 폴더 경로 = tableFolders.options[i].value.substring(0,tableFolders.options[i].value.length);
if (folderpath.charAt(folderpath.length-1) == "\" )
{
document.getElementById("backDir").value = 폴더 경로;
}
else
{
document.getElementById("backDir").value = 폴더 경로 "\";
}


fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFolder(폴더 경로);
fc = 새 열거자(f.SubFolders);
s = "";
for (;!fc.atEnd(); fc.moveNext())
{
s = fc.item();
s = ",";
}
var len = tableFolders.options.length;
while(len >= 0)
{
tableFolders.options.remove(len);
렌--;
}
var opt = "";
var opt1 = "";
for ( j = 0; j {
var option = document.createElement("OPTION");
opt = opt 폴더 경로.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(옵션);
}
else
{
option.value = opt;
option.text = 선택;
tableFolders.add(옵션);
}

}
if ( tableFolders.options[0].value == tableFolders.options[1].value )
{
tableFolders.options.remove(1) ;
}
if ( s != "" )
{
var 폴더 = s.split(",");
for ( j = 0; j {
option = document.createElement("OPTION");
옵션.값 = 폴더[j];
option.text = 폴더[j];
tableFolders.add(옵션);
}
}
}
}
}


如果您还有好的解决方案,回帖分享一下吧.
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
文件保存位置:
<%----%>

目录位置:




说明:双击列表框的一个选项,就将该文件夹下文件夹显示在该列表框中。第一个就是根目录