1

現在選択されているテキストの URL のみを保存することはできますか?

これにより、選択したテキストがページに保存されます

var selectedText = window.getSelection().toString();

これにより、すべてのハイパーリンクが保存されます

var links = document.links;

編集:
これは次を返しますnull

var data=new Object();
    data.selectedText = window.getSelection();
    console.log(data.selectedText.outerHTML);
4

2 に答える 2

1

「a」タグにあるリンクのみを取得したい場合は、次のようにするだけです。

function getLinksFromSelection() {
    if (window.getSelection) {
        var selection = window.getSelection();
        if (selection.rangeCount > 0) {
            var range = selection.getRangeAt(0);
            var div = document.createElement('DIV');
            div.appendChild(range.cloneContents());
            var links = div.getElementsByTagName("A")
            for (var i=0; i < links.length; i++) {
                console.log(links[i].href);
            }
    }
}

リンク内に含まれるセレクションも考慮したい場合 (つまり、リンクがセレクションの親ノードである場合)、次のようなものを追加します。

var alink = range.commonAncestorContainer;
if (alink.nodeType == 3) {
    // if text node then get parent
    alink = alink.parentNode;
}
if (alink.tagName === 'A') {
    console.log(alink.href)
}

これがフィドルです:http://jsfiddle.net/ESr3C/

于 2013-09-05T19:12:11.077 に答える
0
function getLinks() {

    var selectedText = window.getSelection().toString();

    regex = new RegExp(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/gim);

    var result;
    while((result = regex.exec(selectedText)) !== null) {
       console.log(result[1])
    }
}
于 2013-09-05T17:41:05.943 に答える