```javascript
// ==UserScript==// @name iconfont.cn无刷新修改Font Class// @namespace https://ansonhorse.github.io/// @version 0.1// @description iconfont.cn无刷新修改Font Class// @author Anxon// @match http://www.iconfont.cn/manage/index*// @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js// @grant none// ==/UserScript==(function() { 'use strict' /** * 获取csrf-ctoken * * @returns {String} */ function getCsrfToken() { return $('meta[name="csrf-ctoken"]').attr('content') } function getProjectId() { let matches = window.location.href.match(/projectId=(\d+)/) return matches ? matches[1] : null } function getItemId(jqItem) { let matches = jqItem.attr('class').match(/icon_id_(\d+)/) return matches ? matches[1] : null } function injectStyle() { $('head').append(` .genteelly-edit {
margin-top: 15px;
margin-bottom: 15px;
background: #e3e3e3;
color: #a67979;
cursor: pointer;
padding: 4px 10px;
}
`) } function update(itemId, newClass) { return new Promise((resolve, reject) => { let data = { font_class: newClass, ctoken: token, pid: projectId, id: itemId, } $.ajax({ url: 'http://www.iconfont.cn/api/icon/updateProjectIcon.json', type: 'POST', data: data, dataType: 'json', }).then(res => { if (res.code == 200) { alert('Success!') } else if (res.message) { alert(res.message) } else { alert('Unknown response:', JSON.stringify(res, null, 2)) } resolve(res) }).catch(err => { console.error('>>> iconfont update:', err) reject(err) }) }) } function mission() { $('.project-iconlist').not('.inited').addClass('inited').find('.icon-item').each(function () { let jqItem = $(this), itemId = getItemId(jqItem) jqItem.append(`
Edit Class
`) }) } let token = getCsrfToken() let projectId = getProjectId() $(function () { injectStyle() if (token && projectId) { $('body').on('click', '.genteelly-edit', function () { let jqBtn = $(this), itemId = jqBtn.data('id'), jqCls = jqBtn.closest('.icon-item').find('.icon-code.icon-code-show'), fullCls = jqCls.text(), cls = jqCls.attr('title'), prefix = fullCls.replace(new RegExp(`-${cls}$`), '') let newCls = prompt('New Class:', cls) if (newCls) { update(itemId, newCls) .then(res => { jqCls.attr('title', newCls).text(prefix + '-' + newCls) }) .catch(err => {}) } }) setInterval(mission, 2000) } })})()
```
网友评论