byr-signature

为北邮人论坛发帖添加个性签名

当前为 2016-06-10 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name byr-signature
  3. // @namespace https://github.com/flowmemo/byr-signature
  4. // @version 0.1.4
  5. // @description 为北邮人论坛发帖添加个性签名
  6. // @author flowmemo
  7. // @match https://bbs.byr.cn/*
  8. // @grant GM_getValue
  9. // @grant GM_setValue
  10. // ==/UserScript==
  11.  
  12. // JavaScript Standard Style: https://github.com/feross/standard
  13.  
  14. ;(function () {
  15. var _DEBUG = 0
  16. function log () {
  17. if (_DEBUG === 1) console.log.apply(console, arguments)
  18. }
  19. 'use strict'
  20. log('hello')
  21. var defaultSig = '————\n' +
  22. '示例签名:\n' +
  23. '微博 [url=http://weibo.com/flowmemo][color=#0000FF]@flowmemo[/color][/url] , 现在主要写JavaScript. 关注广泛, 欢迎交流.\n' +
  24. '\n' +
  25. '[url=https://github.com/flowmemo/byr-signature][color=#0000FF]此签名通过「北邮人签名档」脚本发送[/color][/url]'
  26. var id // timeout id
  27. function addPostSig () {
  28. log('addPostSig')
  29. var signature = GM_getValue('sig', defaultSig)
  30. var div = document.getElementById('post_content')
  31. if (!div) return
  32. div.value += '\n' + signature
  33. return true
  34. }
  35. function addQuickSig () {
  36. log('addQuickSig')
  37. var signature = GM_getValue('sig', defaultSig)
  38. var page = document.querySelector('.page-select a')
  39. if (!page) return
  40. var curPage = page.text
  41. if (!window.location.href.match(/\?p=(\d+)/)) {
  42. if (curPage !== '1') return
  43. } else {
  44. var hrefPage = window.location.href.match(/\?p=(\d+)/)[1]
  45. if (hrefPage !== curPage) return
  46. }
  47.  
  48. var div = document.getElementsByName('content')[0]
  49. if (!div) return
  50. div.value += '\n' + signature
  51. log('add value')
  52. return true
  53. }
  54. function polling () {
  55. log('polling')
  56. if (window.location.href.indexOf('#!article') === -1) return
  57. window.clearTimeout(id) // clear timeout if it already exists
  58.  
  59. function cb () {
  60. if (window.location.href.indexOf('/post') > -1) {
  61. if (addPostSig()) {
  62. sigPanel()
  63. return
  64. }
  65. } else if (addQuickSig()) return
  66. id = setTimeout(cb, 300)
  67. }
  68. cb()
  69. }
  70. function sigPanel () {
  71. log('sigPanel')
  72.  
  73. var div = document.createElement('div')
  74. var postItems = document.getElementsByClassName('post-list-item')
  75. var referNode = postItems[postItems.length - 2]
  76. referNode.appendChild(div)
  77.  
  78. div.outerHTML = '<br><br><div>' +
  79. '<div class="post-m">byr-signature自定义签名</div>' +
  80. '<div class="byr-signature" style="border:1px solid #c9d7f1;padding:5px;width:680px">' +
  81. '<textarea class="post-textarea" name="sig-content" placeholder="在此输入你的签名"></textarea><br>' +
  82. '</div><p><input name="saveSig" type="button" value="保存"> 保存后刷新页面生效(注意保存你的发帖内容)</p></div>'
  83. var userSig = document.getElementsByName('sig-content')[0]
  84. userSig.value = GM_getValue('sig', defaultSig)
  85. var saveButton = document.getElementsByName('saveSig')[0]
  86. saveButton.addEventListener('click', function () {
  87. GM_setValue('sig', (userSig.value))
  88. })
  89. }
  90. if (window.location.href.indexOf('#!article') > -1) polling()
  91. window.addEventListener('hashchange', polling)
  92. })()