lagouhelper

拉勾自定义标记

  1. // ==UserScript==
  2. // @name lagouhelper
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0.1
  5. // @description 拉勾自定义标记
  6. // @author hujun
  7. // @match https://www.lagou.com/*
  8. // @grant none
  9. // @require http://code.jquery.com/jquery-1.11.0.min.js
  10. // ==/UserScript==
  11.  
  12. this.$ = this.jQuery = jQuery.noConflict(true);
  13.  
  14. var companySelector='div[class^="company-name"]';
  15. var pageSelector='li[class^="lg-pagination-"]';
  16.  
  17. var cookieHelper={
  18. getCookie:function(c_name)
  19. {
  20. if (document.cookie.length>0)
  21. {
  22. var c_start=document.cookie.indexOf(c_name + "=");
  23. if (c_start!=-1)
  24. {
  25. c_start=c_start + c_name.length+1;
  26. var c_end=document.cookie.indexOf(";",c_start);
  27. if (c_end==-1) c_end=document.cookie.length;
  28. return unescape(document.cookie.substring(c_start,c_end));
  29. }
  30. }
  31. return "";
  32. },
  33. setCookie:function(c_name,value,expiredays)
  34. {
  35. var exdate=new Date();
  36. exdate.setDate(exdate.getDate()+expiredays);
  37. document.cookie=c_name+ "=" +escape(value)+
  38. ((expiredays===null) ? "" : ";expires="+exdate.toGMTString());
  39. }
  40. };
  41.  
  42.  
  43. var markHelper={
  44. markJsonObject:cookieHelper.getCookie('lagouhelperusermark')?JSON.parse(cookieHelper.getCookie('lagouhelperusermark')):{},
  45. getMark:function(company){
  46. var remarkDict=markHelper.markJsonObject;
  47. if(remarkDict[company]){
  48. return {
  49. Company:company,
  50. Remark:remarkDict[company]
  51. };
  52. }
  53. for(var item in remarkDict){
  54. if(company.indexOf(item)!=-1){
  55. return {
  56. Company:item,
  57. Remark:remarkDict[item]
  58. };
  59. }
  60. }
  61. return null;
  62. },
  63. removeMark:function(oldCompany){
  64. if(oldCompany){
  65. delete markHelper.markJsonObject[oldCompany];
  66. }
  67. //保存到cookie
  68. cookieHelper.setCookie('lagouhelperusermark',JSON.stringify(markHelper.markJsonObject),365*10);
  69. },
  70. saveMark:function(oldCompany,newCompany,remark){
  71. if(oldCompany){
  72. delete markHelper.markJsonObject[oldCompany];
  73. }
  74. markHelper.markJsonObject[newCompany]=remark;
  75. //保存到cookie
  76. cookieHelper.setCookie('lagouhelperusermark',JSON.stringify(markHelper.markJsonObject),365*10);
  77. }
  78. };
  79.  
  80. /*
  81. * 检查公司名称是否被标记
  82. */
  83. function checkCompany(){
  84. $(companySelector).each(function(){
  85. // var company=$(this).find('a').text();
  86. // //console.log('company:'+company);
  87. // $(this).append('<i><img src="https://resource.iphonexsr.com/images/Note.png" width="24" alt="标记" title="标记" class="lagouhelper_mark" style="cursor:pointer;"/></i>');
  88. // var mark=markHelper.getMark(company);
  89. // if(mark){
  90. // $(this).append('<i class="lagouhelper_remark"><font color="red">'+mark.Remark+'</font></i>');
  91. // }
  92. //console.log($(this).parent().parent().parent().find('.logouhelper_div').length);
  93. if($(this).parent().parent().parent().find('.logouhelper_div').length==0){
  94. addRemarkHtml($(this));
  95. }
  96. });
  97. setTimeout(function(){
  98. checkCompany();
  99. },3000);
  100. }
  101.  
  102.  
  103. /*
  104. * 刷新备注
  105. */
  106. function refreshRemark(){
  107. $(companySelector).each(function(){
  108. // var company=$(this).find('a').text();
  109. // var mark=markHelper.getMark(company);
  110. // $(this).find('.lagouhelper_remark').remove();
  111. // if(mark){
  112. // $(this).append('<i class="lagouhelper_remark"><font color="red">'+mark.Remark+'</font></i>');
  113. // }
  114. $(this).parent().parent().parent().find('.logouhelper_div').remove();
  115. addRemarkHtml($(this));
  116. });
  117. }
  118.  
  119. //添加备注html
  120. function addRemarkHtml($company){
  121. var company=$company.find('a').text();
  122. //console.log('company:'+company);
  123. var html='';
  124. html+='<div class="logouhelper_div" style="margin-left: 500px;">';
  125. html+='<i><img src="https://resource.iphonexsr.com/images/Note.png" data-company="'+company+'" width="24" alt="标记" title="标记" class="lagouhelper_mark" style="cursor:pointer;"/></i>';
  126. var mark=markHelper.getMark(company);
  127. if(mark){
  128. html+='<i class="lagouhelper_remark"><font style="color:red">'+mark.Remark+'</font></i>';
  129. }
  130. html+='</div>';
  131. $company.parent().parent().after(html);
  132. }
  133.  
  134.  
  135. $(function(){
  136. //checkCompany();
  137. var wait=3000;
  138. setTimeout(function(){
  139. checkCompany();
  140. },wait);
  141. //点击“标记”图标弹出编辑框
  142. $(document).on('click','.lagouhelper_mark',function(event){
  143. //var $company_name=$(this).closest('.company_name');
  144. //var $company_name=$(this).parent().parent();
  145. var lagoucompany=$(this).attr('data-company');
  146. var mark=markHelper.getMark(lagoucompany);
  147. var popupHtml='<div id="lagouhelper_popup_edit" style="width:400px;height:200px;background-color:white;z-index:9999;position:fixed;top:40%;left:40%;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none;text-align:center;font-size:16px;">'
  148. +'<div style="margin-top:50px;"><label>公司关键词:</label><input class="lagouhelper_company" type="text" style="width:250px;height:30px;font-size:16px;" value="'+(mark?mark.Company:lagoucompany)
  149. +'" data-oldcompany="'+(mark?mark.Company:'')+'"/></div>'
  150. +'<div style="margin:10px 0 0 48px;"><label>备注:</label><input class="lagouhelper_remark" type="text" style="width:250px;height:30px;font-size:16px;" value="'+(mark?mark.Remark:'')+'"/></div>'
  151. +'<div style="margin-top:10px;"><input type="button" value="保存" class="lagouhelper_btn_save" style="background-color:#00b38a;color:#fff;width:60px;height:35px;margin:0 5px;font-size:16px;"/>'
  152. +'<input type="button" value="取消" class="lagouhelper_btn_cancel" style="background-color:#00b38a;color:#fff;width:60px;height:35px;margin:0 5px;font-size:16px;"/></div></div>';
  153. $('body').append(popupHtml);
  154. })
  155. //保存备注
  156. .on('click','.lagouhelper_btn_save',function(){
  157. var $lagouhelperPopupEdit=$('#lagouhelper_popup_edit');
  158. var oldCompany=$lagouhelperPopupEdit.find('.lagouhelper_company').attr('data-oldcompany');
  159. var newCompany=$lagouhelperPopupEdit.find('.lagouhelper_company').val().trim();
  160. var remark=$lagouhelperPopupEdit.find('.lagouhelper_remark').val().trim();
  161. //检查输入是否规范
  162. if(!newCompany){
  163. alert('公司关键词不能为空或空格');
  164. return;
  165. }
  166. if(!remark){
  167. markHelper.removeMark(oldCompany);
  168. markHelper.removeMark(newCompany);
  169. }
  170. else{
  171. markHelper.saveMark(oldCompany,newCompany,remark);
  172. }
  173. $('#lagouhelper_popup_edit').remove();
  174. refreshRemark();
  175. })
  176. .on('click','.lagouhelper_btn_cancel',function(){
  177. $('#lagouhelper_popup_edit').remove();
  178. })
  179. .on('click',pageSelector,function(){
  180. setTimeout(function(){
  181. checkCompany();
  182. },wait);
  183. });
  184. });