Javascript フォルダー選択のための 2 つのソリューション box_javascript スキル

WBOY
リリース: 2016-05-16 18:50:56
オリジナル
1015 人が閲覧しました
解決策 1:
Windows シェルを呼び出しますが、セキュリティの問題が発生します。

*browseFolder.js
* このファイルは、BrowseFolder() 関数を定義します。ユーザーがシステム フォルダーを選択する機能を実装するためのフォルダー選択ダイアログ ボックス
*
* フォルダー選択ダイアログ ボックスの開始ディレクトリは、
* Shell.BrowseForFolder(WINDOW_HANDLE, Message, OPTIONS, strPath) によって決定されます。 ) 関数
*
* の strPath パラメーター設定 例: 0x11--Mycomputer
* 0 --デスクトップ
* "c:\"--システム C ドライブ
*
* この関数を HTML ファイルに適用するには、次のコードを使用します。
*
* または、次のコードを

* セキュリティの問題により、この JS コードを正しく実行するには次の設定も必要であることに注意してください。
* そうしないと、「権限がない」という問題が発生します。
*
* 1. 信頼できるサイトを設定します (たとえば、ローカルのサイトは http://localhost になります)。
* 2. 次に: 信頼されたサイトのセキュリティ レベルのカスタム設定で、次のオプションを設定します。
* 「安全とマークされていない ActiveX コントロールを初期化してスクリプト実行します」----「有効にする」

browserFolder.js:
コードをコピー コードは次のとおりです:

/**//***
path 値を表示するオブジェクト ID
****/
function raiseFolder(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 = Folder "\">}
document.getElementById (path).value = Folder;
return Folder;
}
catch (e) {
alert(e.message); }


使用時:



コードをコピー
コードは次のとおりです: "button" onclick= "browseFolder('path')"
value="生成パスを選択します" />


2. 🎜>js はローカル ハードディスクの選択ボックスを読み取るという欠点があります。




コードをコピーします。

コードは次のとおりです:

<頭>

無标题文档





















説明: 二重リスト ボックスの 1 つでは、そのファイルの次のファイルがそのリスト ボックスに表示されます。


文書保存場所:
<%----%>

目录位置:





/**//*
* 初期化、システム内のすべてのドライブを 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 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(オプション);
}
}

/**//*
*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 drive = 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 = 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);
レン--;
}
var オプション = document.createElement("OPTION");
option.value = ドライブ ":\";
option.text = ドライブ ":\";
tableFolders.add(オプション);
var フォルダー = s.split(",");
for ( j = 0; j {
option = document.createElement("OPTION");
option.value = フォルダー[j];
option.text = フォルダー[j];
tableFolders.add(オプション);
}
}
else
{
alert("無法改变当前の内容!")
}
}
else
return false;
}
}
}

/**//*
*table_folder双击选项内の 1 つの選択、就将このファイルの下にあるファイルは、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 = 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);
レン--;
}
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");
option.value = フォルダー[j];
option.text = フォルダー[j];
tableFolders.add(オプション);
}
}
}
}
}


如果您还有好解决方案、回章分享一下吧。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート