click a link always open a new tab

click a link always open a new tabs

  1. // ==UserScript==
  2. // @name click a link always open a new tab
  3. // @description click a link always open a new tabs
  4. // @icon https://img1.baidu.com/it/u=1412332306,99938487&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500
  5. // @license MIT
  6. // @version 0.0.2
  7. // @author lee mathew
  8. // @run-at document-end
  9. // @include http*://*
  10. // @namespace https://greasyfork.org/users/1090699
  11. // ==/UserScript==
  12.  
  13.  
  14. (function () {
  15.  
  16.  
  17. // const onClick = function (event, href) {
  18. // // event.preventDefault();
  19. // console.log(event, href)
  20. // }
  21. let elements = document.querySelectorAll("a")
  22. elements.forEach(el => {
  23. //如果是a标签的href只有javascript:;之类的,需要跳过
  24. if (el.href.indexOf('javascript:') === -1&&['http','https'].includes(el.href.split(":")[0])) {
  25. el.target = '_blank'
  26. // let params = queryURLparamsRegEs6(el.href)
  27. // params['new_tab_return_path'] = window.location.href
  28. // el.href = paramsToUrl(params)
  29. // el.addEventListener('click', (event) => { onClick(event, el.href) })
  30. }
  31. })
  32. // let params = queryURLparamsRegEs6(window.location.href)
  33. // if (params['new_tab_return_path']) {
  34. // console.log('pushState!!!', location.href)
  35. // setTimeout(() => {
  36. // var thisLocation = location.href;
  37. // // history.replaceState({ page: 'intercept', entered: false }, '', intercetpUrl);
  38. // history.pushState({ page: 'current' }, '', thisLocation);
  39. // }, 1000)
  40.  
  41. // }
  42. // window.addEventListener("popstate", e => {
  43. // alert("监听到了浏览器的返回按钮事件");
  44. // }, false);
  45.  
  46.  
  47. // function queryURLparamsRegEs6(url) {
  48. // let obj = {}
  49. // obj.baseUrl = url.split("?")[0]
  50. // if (url.indexOf('?') < 0) return obj
  51. // let arr = url.split('?')
  52. // url = arr[1]
  53. // let array = url.split('&')
  54. // for (let i = 0; i < array.length; i++) {
  55. // let arr2 = array[i]
  56. // let arr3 = arr2.split('=')
  57. // obj[arr3[0]] = arr3[1]
  58. // }
  59. // return obj
  60. // }
  61. // function paramsToUrl(params) {
  62. // let ans = params.baseUrl
  63. // delete params.baseUrl
  64. // Object.keys(params).forEach((key, index) => {
  65. // if (index === 0) {
  66. // ans += '?'
  67. // } else {
  68. // ans += '&'
  69. // }
  70. // ans += `${key}=${params[key]}`
  71. // })
  72. // return ans
  73. // }
  74. })();