このマクロは、相対パスを作成するマクロです。このマクロの実行には、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); }