リンクをクリップボードにコピー

タブウィンドウに表示されているページ内のすべてのリンクを読み出してクリップボードにコピーすることもできます。リンクされているURLはaタグのhref属性に入っているので、これを読み出して改行コードで連結していきます。改行コードは"\r\n"の文字になります。ページ内のすべてのリンクを読み出したらクリップボードにコピーします。クリップボードへのコピーはparentWindow.clipboardData.setData()を使います。setData()には2つのパラメータが必要です。最初のパラメータはクリップボードに設定するデータの種類を指定します。今回は標準テキストなので"text"の文字を指定します。2番目のパラメータにはクリップボードに入れるテキストを指定します。

実際のプログラムはスクリプト004になります。通常、リンクのURLを取得したら文字列として+記号で連結します。しかし、IEのJScriptは文字列の連結に関しては非常に低速なため、リンクが数百あるだけで何秒もかかります。そこで、処理を速く終わらせるためにリンク先のURLを配列に入れておき、最後にjoin()を使って連結しています。このようにすると瞬時に処理が終わります。

今回作成したようなスクリプトがあればWeb制作時の手助けになるでしょう。

クリップボードにコピーするページを開く

コピーが終了するとダイアログが表示される

全リンクをメモ帳にペーストした状態

スクリプト004

function OnClick(){
    // ページ内リンクのURLをクリップボードにコピーする
    var idDocument = Lunascape.GetDocumentID(Lunascape.ActiveIndex);
    var doc = Lunascape.GetDocumentObject(idDocument);
    var txt = new Array();
    var count = 0;
    var aTag = doc.getElementsByTagName("a");
    for(var i=0; i<aTag.length; i++){
        txt[count++] = aTag[i].href + "\r\n";
    }
    var result = txt.join("");
    doc.parentWindow.clipboardData.setData("text", result);
    Lunascape.MessageBox(aTag.length+"個のリンクをクリップボードにコピーしました");
}