このマクロは、相対パスを作成するマクロです。このマクロの実行には、SeraphyScriptTools をインストールする必要があります。
マクロを実行するとコモンダイアログが立ち上がり、選んだファイルへの相対パスを書き込みます。選んだファイルが index.html の場合は、パスから index.html を削除し、スラッシュで終わるアドレスになります。
一応きちんと動いてますが、文法的におかしい所などがありましたら、指摘していただけるとありがたいです。
このマクロは、相対パスを作成するマクロです。このマクロの実行には、SeraphyScriptTools をインストールする必要があります。
マクロを実行するとコモンダイアログが立ち上がり、選んだファイルへの相対パスを書き込みます。選んだファイルが index.html の場合は、パスから index.html を削除し、スラッシュで終わるアドレスになります。
一応きちんと動いてますが、文法的におかしい所などがありましたら、指摘していただけるとありがたいです。
// パスがindexで終わる場合に、パスをスラッシュで終わらせるかどうか
// スラッシュで終わらせるなら0、indexのままで良いなら1。
var slashend = 0;
// 上記が0の場合、indexファイルの名前を入れる
var indexname = "index.html";
// ======設定終わり======
var WshShell = new ActiveXObject( "WScript.Shell" );
function GetRelativePath(path1,path2){//path1に対するpath2の相対パスを求める
path1 = path1.split("\\");
path2 = path2.split("\\");
while ((1 < path1.length) && (1 < path2.length) && (path1[0]==path2[0])){
path1 = path1.slice(1,path1.length);
path2 = path2.slice(1,path2.length);
}
var pat = "";
for (var i=0;i==path1.length-1;i++) pat += "./";//同じ階層なら./を付ける
for (var i=0;i<path1.length-1;i++) pat += "../";//上の階層なら../を付ける
return(pat + path2.join("/"));
}
var Instance = new ActiveXObject( "SeraphyScriptTools.CommDialog");
CurrentPath = document.FullName;
//コモンダイアログ
var path2 = Instance.OpenFileDialog (CurrentPath , "すべてのファイル|*.*");
if(path2 != null){//キャンセルした時用にifで。
var pathloot = document.Path;//開いてるファイルのディレクトリパス取得
var path1 = pathloot + "\\";//ケツに\を足す
var relpath = GetRelativePath(path1,path2);
if (slashend == 0){
var findindex = relpath.indexOf(indexname);//indexnameを探す
if (findindex != -1){
relpath = relpath.replace(indexname, "");//indexnameを消す
}
}
var linktag = relpath;
document.write(linktag);
}