用 org-protocol 选中网页内容保存并保留选中文本中的链接

一行版本用的 encodeURIComponent 会对部分字符保留(!, ', (, ), *)),导致对于一些网站失效,比如说 Why We Think | Lil'Log

URLSearchParams 修改了一版

javascript:(function() {
  const selectedText = (function() {
    var html = "";
    var sel = window.getSelection();
    if (sel.rangeCount) {
      var container = document.createElement("div");
      for (var i = 0, len = sel.rangeCount; i < len; ++i) {
        container.appendChild(sel.getRangeAt(i).cloneContents());
      }
      html = container.innerHTML;
    }
    var dataDom = document.createElement('div');
    dataDom.innerHTML = html;
    dataDom.querySelectorAll('a').forEach(function(item, idx) {
      console.log('find a link');
      var url = new URL(item.href, window.location.href).href;
      var content = item.innerText;
      item.innerText = '[['+url+']['+content+']]';
    });
    ['p', 'h1', 'h2', 'h3', 'h4'].forEach(function(tag, idx) {
      dataDom.querySelectorAll(tag).forEach(function(item, index) {
        var content = item.innerHTML.trim();
        if (content.length > 0) {
          item.innerHTML = content + '&#13;&#10;';
        }
      });
    });
    return dataDom.innerText.trim();
  })();

  const params = new URLSearchParams({
    template: "w",
    url: location.href,
    title: document.title || "UNTITLED PAGE",
    body: selectedText
  });

  location.href = 'org-protocol://capture?' + params.toString();
})();

单行书签版

javascript:(function(){const selectedText=(function(){var html="";var sel=window.getSelection();if(sel.rangeCount){var container=document.createElement("div");for(var i=0,len=sel.rangeCount;i<len;++i){container.appendChild(sel.getRangeAt(i).cloneContents());}html=container.innerHTML;}var dataDom=document.createElement('div');dataDom.innerHTML=html;dataDom.querySelectorAll('a').forEach(function(item,idx){console.log('find a link');var url=new URL(item.href,window.location.href).href;var content=item.innerText;item.innerText='[['+url+']['+content+']]';});['p','h1','h2','h3','h4'].forEach(function(tag,idx){dataDom.querySelectorAll(tag).forEach(function(item,index){var content=item.innerHTML.trim();if(content.length>0){item.innerHTML=content+'&#13;&#10;';}});});return dataDom.innerText.trim();})();const params=new URLSearchParams({template:"w",url:location.href,title:document.title||"UNTITLED PAGE",body:selectedText});location.href='org-protocol://capture?'+params.toString();})();

相关帖子

1 个赞