Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let create= (x)=> document.createElement(x),
- select= (x,y=document)=> y.querySelector(x),
- selectAll= (x,y=document)=> y.querySelectorAll(x);
- /*
- td, td>a{
- ocerflow: auto;
- white-space: nowrap;
- text-decoration:none;
- }
- */
- /*__________________________________________________________________________________________*/
- let obu = false;
- window.onunload = window.onbeforeunload= function(){
- if(!obu){
- obu= true;
- sessionStorage.removeItem("urltext");
- }};
- function linkify(){
- let a= selectAll("a");
- let regex= /(https?\:\/\/|javascript\:).+/;
- let b= [...a].map(i=>i.innerHTML);
- if(!sessionStorage.urltext) sessionStorage.urltext= JSON.stringify(b);
- a.forEach((i,x)=>{
- if(!regex.test(i.text)){
- i.text= i.href;
- }
- else{
- let c= JSON.parse(sessionStorage.urltext);
- i.innerHTML= c[x];
- }
- });
- }
- /*__________________________________________________________________________________________*/
- let selected= "lol";
- document.onselectionchange= function() {
- let a= window.getSelection();
- selected= (a.toString().length > 0) ? a.getRangeAt(0) : "lol";
- };
- function selectedLinks(){
- let a= selectAll("a");
- let c= [];
- if(a.length<=0){
- alert("No links found on page");
- }
- else{
- if(selected!=="lol"){
- let b= window.getSelection();
- b.removeAllRanges(); b.addRange(selected);
- a.forEach(i=> {if(b.containsNode(i, true)) c.push(i)});
- if(c.length>0){
- let d= confirm(`${c.length} links selected. Open all in new tabs?`);
- if(d) c.forEach(i=> window.open(i.href,"_blank"));
- }
- else alert("No links found in selection range!");
- }//Selected is lol
- else{
- let e= confirm(`No selection was made. Open ${a.length} links found on this page in new tabs?`);
- if(e) a.forEach(i=> window.open(i.href,"_blank"));
- }
- }
- window.getSelection().removeAllRanges();
- selected= "lol";
- }
- /*__________________________________________________________________________________________*/
- function listLinks(){
- let a= selectAll("a");
- let b= create("table");
- let c= create("style");
- let d= create("div");
- d.id= "title";
- let f= prompt("Find links containing this keyword (RegEx allowed). Leave blank to list all links");
- let g= window.open();
- g.document.body.append(c,d,b);
- c.innerHTML=`
- .red{
- color: red;
- }
- table{
- border:1.5px solid black;
- border-collapse: collapse;
- width: 90vw;
- margin-left: 5vw;
- table-layout: fixed;
- }
- #title{
- padding: 5px;
- width: 90vw;
- margin: 10px 5vw;
- background: pink;
- }
- td{
- padding: 2px;
- border:1px solid black;
- height: calc(1em + 5px);
- width: calc((100% - 3ch) / 2);
- text-align: left;
- vertical-align: center;
- overflow: auto;
- }
- td *{
- max-height: calc(1em + 5px);
- }
- tr>td:nth-child(1){
- color: brown;
- font-weight: bold;
- text-align: right;
- width: 3ch;
- }`;
- let e=[];
- function findLinks(regex){
- a.forEach(i=>{
- if(regex.test(i.href)){
- let a= `<tr>
- <td>${i.innerHTML||'<span class="red">Empty name</span>'}</td>
- <td><a href="${i.href}">${i.href}</a></td>
- </tr>`;
- e.push(a);
- }
- });
- }
- if(f){
- let regexp= /^\/(.*?)\/([gimuy]*)$/;
- let match= f.match(regexp);
- let regex= (match) ? new RegExp(match[1],match[2]) : new RegExp(f);
- findLinks(regex);
- }
- else{
- let regex= /.+/;
- findLinks(regex);
- }
- b.innerHTML= e.join("\n");
- let rows= selectAll("tr",g.document);
- rows.forEach((i,x)=>{
- let a= create("td");
- a.innerHTML= x+1;
- i.prepend(a);
- });
- let title= select("#title",g.document);
- if(a.length>0){
- if(f){
- title.innerHTML= (e.length>0) ?
- `Showing ${rows.length} out of ${a.length} links, matching <span class="red">${f}</span>`:
- `No links found matching <span class="red">${f}</span>`;
- }
- else{
- title.innerHTML= (e.length>0) ?
- `Showing all links found on <span class="red">${location.href}</span>`:
- `No links found matching <span class="red">${f}</span>`;
- }
- }
- else title.innerHTML= `No links found on <span class="red">${location.href}</span>`;
- }
Add Comment
Please, Sign In to add comment