スナックelve 本店

バツイチ40代女の日記です

はてなブログで引用するのにちょっと便利な機能拡張 ちょっと追加

皆さん、完成という言葉を不用意に使ってはいけませんヨヨヨ。
snack.elve.club

というわけで、図(png,gif,jpeg,jpg)とpdfを追加しようとしてですね・・・pdfはタイトル欲しかったんですが・・・ワイの頭では無理じゃ、というわけで、urlのみです。

pdfの拡張機能使ってるとうまく動かん

function main() {
    allurl = location.href;
    prtcl = location.protocol;
    hst = location.host;
    localpath = location.pathname;
    localpara = location.search;

    const selectedText = window.getSelection().toString();
    //テキストを選択していたら引用記法
    //google
    //[google:検索ワード]
    if (hst.match(/.*google.com.*/g)) {
        result = localpara.replace(/.*q=([^&]*)&.*/g, '$1');
        result = decodeURI(result)
        if (result == null) {
            result = "NULL";
        }
        copyToClipboard("[google:" + result + "]");
        //wikipedia
        //[wikipedia:項目目]
    } else if (hst.match(/.*wikipedia.org.*/g)) {
        result = localpath.replace(/\/wiki\/(.*)/g, '$1');
        result = decodeURI(result)
        if (result == null) {
            result = "NULL";
        }
        copyToClipboard("[wikipedia:" + result + "]");
    } else if (localpath.match(/\.mp3/g)) {
        //mp3
        str = '<audio src="' + prtcl + '\/\/' + hst + localpath + '" controls></audio>';
        copyToClipboard(str);
    } else if (localpath.match(/\.mp4/g)) {
        //mp4
        str = '<video src="' + prtcl + '\/\/' + hst + localpath + '" controls></video>';
        copyToClipboard(str);
    } else if (localpath.match(/(\.gif|\.jpg|\.jpeg|\.png)/g)) {
        //iamge
        str = '<a href="' + allurl + '" ><img src="' + allurl + '" ></a>';
        copyToClipboard(str);

    } else if (localpath.match(/\.pdf/g)) {
        //pdf
        const e = document.createElement('textarea');
        e.value = "[" + allurl + ":title]";
        document.querySelector('body').append(e);
        e.select();
        copyToClipboard(e.value);
        e.remove();

    } else if (localpath.match(/.*viewer\.html\?pdfurl=.*/)) {
        //pdf<うごかねぇ>
        copyToClipboard("[" + allurl + ":title=" + location.title + "]");

    } else if (selectedText) {
        //>ページのURL:titel>
        //選択文章(改行コード含む)
        //<<
        str = ">" + allurl + ":title>\n" + selectedText + "\n<<\n";
        copyToClipboard(str);

    } else {
        //[URL:title]
        copyToClipboard("[" + allurl + ":title]");
    }

}
//https://mseeeen.msen.jp/copy-text-to-clipboard-with-javascript-in-2021/
async function copyToClipboard(text) {
    try {
        await navigator.clipboard.writeText(text)
    } catch (error) {
        alert((error && error.message) || 'コピーに失敗しました')
    }
}
main();