lagouhelper

拉勾自定义标记

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name         lagouhelper
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @description  拉勾自定义标记
// @author       hujun
// @match        https://www.lagou.com/*
// @grant        none
// @require      http://code.jquery.com/jquery-1.11.0.min.js
// ==/UserScript==

this.$ = this.jQuery = jQuery.noConflict(true);

var companySelector='div[class^="company-name"]';
var pageSelector='li[class^="lg-pagination-"]';

var cookieHelper={
    getCookie:function(c_name)
    {
        if (document.cookie.length>0)
        {
            var c_start=document.cookie.indexOf(c_name + "=");
            if (c_start!=-1)
            {
                c_start=c_start + c_name.length+1;
                var c_end=document.cookie.indexOf(";",c_start);
                if (c_end==-1) c_end=document.cookie.length;
                return unescape(document.cookie.substring(c_start,c_end));
            }
        }
        return "";
    },
    setCookie:function(c_name,value,expiredays)
    {
        var exdate=new Date();
        exdate.setDate(exdate.getDate()+expiredays);
        document.cookie=c_name+ "=" +escape(value)+
            ((expiredays===null) ? "" : ";expires="+exdate.toGMTString());
    }
};


var markHelper={
    markJsonObject:cookieHelper.getCookie('lagouhelperusermark')?JSON.parse(cookieHelper.getCookie('lagouhelperusermark')):{},
    getMark:function(company){
        var remarkDict=markHelper.markJsonObject;
        if(remarkDict[company]){
            return {
                Company:company,
                Remark:remarkDict[company]
            };
        }
        for(var item in remarkDict){
            if(company.indexOf(item)!=-1){
                return {
                    Company:item,
                    Remark:remarkDict[item]
                };
            }
        }
        return null;
    },
    removeMark:function(oldCompany){
        if(oldCompany){
            delete markHelper.markJsonObject[oldCompany];
        }
        //保存到cookie
        cookieHelper.setCookie('lagouhelperusermark',JSON.stringify(markHelper.markJsonObject),365*10);
    },
    saveMark:function(oldCompany,newCompany,remark){
        if(oldCompany){
            delete markHelper.markJsonObject[oldCompany];
        }
        markHelper.markJsonObject[newCompany]=remark;
        //保存到cookie
        cookieHelper.setCookie('lagouhelperusermark',JSON.stringify(markHelper.markJsonObject),365*10);
    }
};

/*
 * 检查公司名称是否被标记
 */
function checkCompany(){
    $(companySelector).each(function(){
//         var company=$(this).find('a').text();
//         //console.log('company:'+company);
//         $(this).append('<i><img src="https://resource.iphonexsr.com/images/Note.png" width="24" alt="标记" title="标记" class="lagouhelper_mark" style="cursor:pointer;"/></i>');
//         var mark=markHelper.getMark(company);
//         if(mark){
//             $(this).append('<i class="lagouhelper_remark"><font color="red">'+mark.Remark+'</font></i>');
//         }
        //console.log($(this).parent().parent().parent().find('.logouhelper_div').length);
        if($(this).parent().parent().parent().find('.logouhelper_div').length==0){
        addRemarkHtml($(this));
        }
    });
    setTimeout(function(){
        checkCompany();
    },3000);
}


/*
 * 刷新备注
 */
function refreshRemark(){
    $(companySelector).each(function(){
//         var company=$(this).find('a').text();
//         var mark=markHelper.getMark(company);
//         $(this).find('.lagouhelper_remark').remove();
//         if(mark){
//             $(this).append('<i class="lagouhelper_remark"><font color="red">'+mark.Remark+'</font></i>');
//         }
        $(this).parent().parent().parent().find('.logouhelper_div').remove();
        addRemarkHtml($(this));
    });
}

//添加备注html
function addRemarkHtml($company){
    var company=$company.find('a').text();
    //console.log('company:'+company);
    var html='';
    html+='<div class="logouhelper_div" style="margin-left: 500px;">';
    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>';
    var mark=markHelper.getMark(company);
    if(mark){
        html+='<i class="lagouhelper_remark"><font style="color:red">'+mark.Remark+'</font></i>';
    }
    html+='</div>';
    $company.parent().parent().after(html);
}


$(function(){
    //checkCompany();
    var wait=3000;
    setTimeout(function(){
        checkCompany();
        },wait);
    //点击“标记”图标弹出编辑框
    $(document).on('click','.lagouhelper_mark',function(event){
        //var $company_name=$(this).closest('.company_name');
        //var $company_name=$(this).parent().parent();
        var lagoucompany=$(this).attr('data-company');
        var mark=markHelper.getMark(lagoucompany);
        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;">'
        +'<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)
        +'" data-oldcompany="'+(mark?mark.Company:'')+'"/></div>'
        +'<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>'
        +'<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;"/>'
        +'<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>';
        $('body').append(popupHtml);
    })
    //保存备注
    .on('click','.lagouhelper_btn_save',function(){
        var $lagouhelperPopupEdit=$('#lagouhelper_popup_edit');
        var oldCompany=$lagouhelperPopupEdit.find('.lagouhelper_company').attr('data-oldcompany');
        var newCompany=$lagouhelperPopupEdit.find('.lagouhelper_company').val().trim();
        var remark=$lagouhelperPopupEdit.find('.lagouhelper_remark').val().trim();
        //检查输入是否规范
        if(!newCompany){
            alert('公司关键词不能为空或空格');
            return;
        }
        if(!remark){
            markHelper.removeMark(oldCompany);
            markHelper.removeMark(newCompany);
        }
        else{
            markHelper.saveMark(oldCompany,newCompany,remark);
        }
        $('#lagouhelper_popup_edit').remove();
        refreshRemark();
    })
    .on('click','.lagouhelper_btn_cancel',function(){
        $('#lagouhelper_popup_edit').remove();
    })
    .on('click',pageSelector,function(){
        setTimeout(function(){
        checkCompany();
        },wait);
    });
});