启信宝增强

在启信宝公司页面插入复制公司名称、复制电话、复制地址、复制高管信息按钮

  1. // ==UserScript==
  2. // @name 启信宝增强
  3. // @namespace https://github.com/the-eric-kwok/my_userscripts
  4. // @version 0.14
  5. // @description 在启信宝公司页面插入复制公司名称、复制电话、复制地址、复制高管信息按钮
  6. // @author EricKwok
  7. // @supportURL https://github.com/the-eric-kwok/my_userscripts/issues
  8. // @match *://www.qixin.com/*
  9. // @match *://www.szjzy.org.cn/member*
  10. // @match *://xib.smartapp.knowlegene.com/marketing/*
  11. // @require https://cdn.jsdelivr.net/npm/clipboard@2.0.8/dist/clipboard.min.js
  12. // @icon https://www.qixin.com/favicon.ico
  13. // @run-at document-idle
  14. // @grant none
  15. // @license GPLv3
  16. // ==/UserScript==
  17.  
  18. let love = false;
  19.  
  20. /**
  21. * Auto remove on-page advertisement
  22. * @param {string} selector CSS selector of AD the root node of AD content
  23. */
  24. function removeAd(selector) {
  25. window.setInterval(function () {
  26. if (document.querySelectorAll(selector).length > 0) {
  27. for (let ad of document.querySelectorAll(selector)) {
  28. ad.parentNode.removeChild(ad);
  29. ad.remove();
  30. }
  31. }
  32. }, 100);
  33. }
  34.  
  35. /**
  36. * Copy a string to system clipboard
  37. * @param {string} str String to be copied
  38. */
  39. function copyMe(str) {
  40. /**
  41. * Copy to clipboard in legacy(old) way, this is a fallback option, in order to be compatible with old browser like IE.
  42. */
  43. function _legacyCopy() {
  44. console.log("正在使用传统方法复制");
  45. let tmpInput = document.createElement('input');
  46. document.insertAdjacentHTML("afterend", tmpInput)
  47. tmpInput.value = str;
  48. tmpInput.focus();
  49. tmpInput.select();
  50. if (document.execCommand('copy')) {
  51. document.execCommand('copy');
  52. }
  53. tmpInput.blur();
  54. console.log('复制成功');
  55. tmpInput.remove();
  56.  
  57. }
  58.  
  59. if (navigator.clipboard && window.isSecureContext) {
  60. console.log("正在使用 navigator clipboard api 进行复制操作");
  61. navigator.clipboard.writeText(str)
  62. .then(() => {
  63. console.log('复制成功');
  64. })
  65. .catch(err => {
  66. console.log("navigator clipboard api 复制时出错,将使用传统方法进行复制")
  67. _legacyCopy();
  68. });
  69. } else {
  70. _legacyCopy();
  71. }
  72. }
  73.  
  74. /**
  75. * 在元素内注入复制按钮
  76. * @param {HTMLElem} elem 要注入复制按钮的页面元素
  77. * @param {String} text 复制到剪贴板的文本
  78. * @param {String} className 复制按钮的自定义 className
  79. * @param {String} style 复制按钮的自定义 style
  80. * @param {String} injectAt 注入位置,可选的值为:beforebegin、afterbegin、beforeend、afterend
  81. * @returns {Boolean} 如果执行完成则返回 true,否则返回 false
  82. */
  83. function addCopyBtn(elem, text, className = "", style = "", injectAt = "beforeend") {
  84. if (!elem) {
  85. return false;
  86. }
  87. let id = parseInt(Math.random() * 1000);
  88. let copyBtn = ` <a id="btn${id}" data-clipboard-text="${text}" class="${className}" style="${style}">复制</a>`
  89. elem.insertAdjacentHTML(injectAt, copyBtn);
  90. let clipboard = new ClipboardJS(`#btn${id}`);
  91. clipboard.on('success', function () {
  92. document.querySelector(`#btn${id}`).innerText = "成功✅";
  93. window.setTimeout(function () {
  94. document.querySelector(`#btn${id}`).innerText = "复制";
  95. }, 1000);
  96. });
  97. return true;
  98. }
  99.  
  100. /**
  101. * 生成范围内随机数
  102. * @param {int} min: 最小值
  103. * @param {int} max: 最大值
  104. * @returns `number`
  105. */
  106. function randBetween(min, max) {
  107. if (min > max) {
  108. let tmp = max;
  109. max = min;
  110. min = tmp;
  111. }
  112. return parseInt(Math.random() * (max - min + 1) + min, 10)
  113. }
  114.  
  115. /**
  116. * Shows an alert with a message in specific format when called
  117. * @param {string} msg Message to be shown in error message
  118. */
  119. function errorAlert(msg) {
  120. let loveLetter = [
  121. "你老公又在写 bug 了!赶紧拍个照告诉他!",
  122. "脚本出问题啦,拍个照发给老公修复噢~",
  123. "绝对不是脚本的问题!肯定是启信网更改了页面排版!不管怎么说还是拍个照告诉老公吧~",
  124. ];
  125. if (love)
  126. alert(`${loveLetter[randBetween(0, loveLetter.length - 1)]}\n出问题的网址是:${location.href}\n错误信息:${msg}`);
  127. else
  128. alert(`脚本出现了问题\n出问题的网址是:${location.href}\n错误信息:${msg}`);
  129. }
  130.  
  131. function loveUxxx() {
  132. // Change avator
  133. if (document.querySelectorAll("img.avator").length > 0) {
  134. for (let avator of document.querySelectorAll("img.avator")) {
  135. avator.src = "https://i.loli.net/2021/11/08/dfo6OqKGVjRgwzB.gif";
  136. }
  137. }
  138. if (location.href.includes("qixin.com/user/home/center")) {
  139. if (document.querySelectorAll(".has-img").length > 0) {
  140. for (let avatar of document.querySelectorAll(".has-img")[0].children) {
  141. avatar.src = "https://i.loli.net/2021/11/08/dfo6OqKGVjRgwzB.gif";
  142. }
  143. }
  144. }
  145. }
  146.  
  147. function qixinEnhance() {
  148. window.onload = window.setTimeout(function () {
  149. removeAd(".app-corner-marker");
  150. removeAd(".web-diversion-container");
  151. removeAd(".app-web-diversion-default");
  152. removeAd(".fixed-tool");
  153. removeAd(".app-home-carousel");
  154. removeAd(".footer-top");
  155. removeAd(".app-events-dialog-config-modal");
  156. removeAd(".app-favorite-tip");
  157. if (love) {
  158. loveUxxx();
  159. }
  160.  
  161. let companyName = "";
  162. let telephone = "";
  163. let address = "";
  164. let senior = "";
  165.  
  166. // 替换分隔符
  167. let delimiter = /[、,。\/\\\.,兼]/g;
  168. // 需要排除的职位(匹配「其他人员」「xx董事」「董事」「xx委员xx」,但不匹配「董事长」、「董事会」等)
  169. let job = /其他人员[,\s]|[^,\s]*董事[,\s]|[^,\s]*董事$|[^,\s]*委员[^,\s]*[,\s]?/g;
  170. // 将职位括号内内容删除
  171. let quote = /(.*?)|\(.*?\)/g;
  172. // 删除开头或末尾的分隔符
  173. let commaAtBeginingOrEnd = /^\s*,|,\s*$/g;
  174.  
  175. if (location.href.includes("qixin.com/search")) {
  176. window.setInterval(function () {
  177. // 搜索结果页注入
  178. document.querySelectorAll("div.company-item > div.col-2 > div.col-2-1 > .company-title").forEach((elem) => {
  179. // 插入复制公司标题按钮
  180. if (!elem.innerText.match(/复制|✅/)) {
  181. addCopyBtn(elem, elem.innerText.trim(), "margin-l-0-3x font-14", "color:#1678F0;font-weight: normal;");
  182. }
  183. });
  184. document.querySelectorAll("div.company-item > div.col-2 > div.col-2-1 > div:nth-child(4) > span:nth-child(1)").forEach((elem) => {
  185. // 插入复制公司邮箱按钮(当公司无邮箱信息时此栏显示的是电话,因此也需要处理电话的情况)
  186. if (!elem.innerText.match(/复制|✅/)) {
  187. let innerText = elem.innerText.replace("邮箱:", "").replace("电话:", "").replace("地址:", "").trim();
  188. if (innerText !== "-") {
  189. addCopyBtn(elem, innerText);
  190. }
  191. }
  192. })
  193. document.querySelectorAll("div.company-item > div.col-2 > div.col-2-1 > div:nth-child(4) > span:nth-child(2)").forEach((elem) => {
  194. // 插入复制公司电话按钮
  195. if (!elem.innerText.match(/复制|✅/)) {
  196. let innerText = elem.innerText.replace("电话:", "").trim();
  197. if (innerText !== "-") {
  198. addCopyBtn(elem, innerText);
  199. }
  200. }
  201. });
  202. document.querySelectorAll("div.company-item > div.col-2 > div.col-2-1 > div:nth-child(5) > span").forEach((elem) => {
  203. // 插入复制公司地址按钮
  204. if (!elem.innerText.match(/复制|✅/)) {
  205. let innerText = elem.innerText.replace("地图显示", "").replace("最新地址", "").replace("地址:", "").trim();
  206. if (innerText !== "-") {
  207. addCopyBtn(elem.querySelector("a"), innerText, null, null, "beforebegin");
  208. }
  209. }
  210. });
  211. }, 1000);
  212. } else if (location.href.includes("qixin.com/publicly/") || location.href.includes("qixin.com/company/")) {
  213. // 公司详情页注入
  214. /**
  215. * Add copy info button to page.
  216. * @param {string} companyName Company name which will be copid to clipboard when button clicked
  217. * @param {string} telephone Telephone number which will be copid to clipboard when button clicked
  218. * @param {string} address Company address which will be copid to clipboard when button clicked
  219. * @param {string} senior Senior executive of company which will be copid to clipboard when button clicked
  220. */
  221. function addBtns(companyName, telephone, address, senior) {
  222. if (arguments.length < 4) {
  223. console.error("Arguments of function addBtns not match, should be exactly 4 args.");
  224. errorAlert("Arguments of function addBtns not match, should be exactly 4 args.")
  225. return;
  226. }
  227. let companyCase;
  228. if (location.href.includes("qixin.com/publicly"))
  229. companyCase = 'publicy';
  230. else if (location.href.includes("qixin.com/company/") && (!document.querySelector(".info-hk")))
  231. companyCase = 'company';
  232. else if (document.querySelector(".info-hk"))
  233. companyCase = 'hk_company';
  234. else
  235. companyCase = 'default';
  236. let _class = {
  237. 'publicy': 'head-tag font-12 inline-block isBlue m-l-10',
  238. 'company': 'head-tag font-12 inline-block isBlue m-l-10',
  239. 'hk_company': 'label label-yellow font-12',
  240. 'default': ''
  241. };
  242. let ids = ["copy_com", "copy_tel", "copy_add", "copy_sen"];
  243. let items = ["公司名称", "电话", "地址", "高管信息"];
  244. let _btnHtml = (companyCase === 'hk_company') ? "" : "<br>";
  245. for (let i = 0; i < arguments.length; i++) {
  246. if (arguments && arguments[i].length > 0) {
  247. _btnHtml += `<a id="${ids[i]}" class="${_class[companyCase]}">复制${items[i]}</a>`;
  248. }
  249. }
  250. if (document.querySelector(".app-head-basic"))
  251. document.querySelector(".app-head-basic").querySelector(".claim-tag").insertAdjacentHTML("afterend", _btnHtml);
  252. else if (document.querySelector(".company-name"))
  253. document.querySelector(".company-name").insertAdjacentHTML("afterend", _btnHtml);
  254. else if (document.querySelector(".title"))
  255. document.querySelector(".title").insertAdjacentHTML("beforeend", _btnHtml)
  256. for (let i = 0; i < arguments.length; i++) {
  257. if (arguments[i].length > 0) {
  258. let _args = arguments;
  259. let _i = i;
  260. document.getElementById(ids[_i]).onclick = function () {
  261. copyMe(_args[_i]);
  262. let originalText = document.getElementById(ids[_i]).innerText;
  263. document.getElementById(ids[_i]).innerText = "✅复制成功!";
  264. setTimeout(() => document.getElementById(ids[_i]).innerText = originalText, 1000);
  265. }
  266. }
  267. }
  268. }
  269. // 从「head」栏中读取
  270. if (document.querySelector(".phone-valid")) {
  271. let telElem = document.querySelector(".phone-valid").parentElement.getElementsByClassName("span-info");
  272. if (telElem.length > 0) {
  273. telephone = telElem[0].innerText.trim();
  274. } else errorAlert("Telephone number inside header not found.");
  275. } else console.log("HTML class \".phone-valid\" not found")
  276. if (document.querySelector(".company-name")) {
  277. companyName = document.querySelector(".company-name").innerText;
  278. console.log("name: " + companyName);
  279. } else console.log("HTML class \".company-name\" not found")
  280.  
  281. // 从「企业概况」栏中读取
  282. if (document.getElementById("overview") && !document.getElementById("overview").innerText.includes("暂无信息")) {
  283. let table = document.getElementById("overview").getElementsByTagName("tbody");
  284. if (table.length > 0) {
  285. let rows = table[0].rows;
  286. for (let row of rows) {
  287. for (let i = 0; i < row.cells.length; i++) {
  288. if (row.cells[i].innerHTML.includes("地址")) {
  289. address = (address.length > 0) ? address : row.cells[i + 1].innerText.replace("查看地图", "").replace("附近企业", "").trim();
  290. }
  291. else if (row.cells[i].innerHTML.includes("企业名称")) {
  292. companyName = (companyName.length > 0) ? companyName : row.cells[i + 1].innerText.trim();
  293. }
  294. else if (row.cells[i].innerHTML.includes("联系电话")) {
  295. telephone += (telephone.length == 0 ? "" : ',') + row.cells[i + 1].innerHTML.trim();
  296. }
  297. }
  298. }
  299. } else errorAlert("Table inside #overview element not found.");
  300. } else console.log("HTML element id \"overview\" not found or doesn't contain information.");
  301.  
  302. // 从「高管信息」栏中读取
  303. if (document.getElementById("employee") && !document.getElementById("employee").innerText.includes("暂无信息")) {
  304. let table = document.getElementById("employee").getElementsByTagName("tbody");
  305. if (table.length > 0) {
  306. let rows = table[0].rows;
  307. for (let j = 0; j < rows.length; j++) {
  308. let row = rows[j];
  309. for (let i = 0, count = 0; i < row.cells.length && count < 4; i++) {
  310. if (row.cells[i].innerHTML.includes("姓名")) {
  311. let _job = rows[j + 1].cells[i + 1].innerText.trim().replace(/\s/g, "").replace(delimiter, ",").replace(job, "").replace(quote, "").replace(commaAtBeginingOrEnd, "");
  312. if (_job.length > 0) {
  313. senior += row.cells[i + 1].innerText.replace("查看简历", "").trim() + ":";
  314. senior += _job;
  315. senior += "、";
  316. count++;
  317. }
  318. }
  319. }
  320. }
  321. senior = senior.substring(0, senior.length - 1);
  322. } else errorAlert("Table inside #employee element not found.");
  323. } else console.log("HTML element id \"employee\" not found or doesn't contain information.");
  324.  
  325. // 从「工商信息」栏中读取
  326. if (document.getElementById("icinfo") && !document.getElementById("icinfo").innerText.includes("暂无信息")) {
  327. let table = document.getElementById("icinfo").getElementsByTagName("tbody");
  328. if (table.length > 0) {
  329. let rows = table[0].rows;
  330. for (let row of rows) {
  331. for (let i = 0; i < row.cells.length; i++) {
  332. if (row.cells[i].innerHTML.includes("地址")) {
  333. address = row.cells[i + 1].innerText.replace("查看地图", "").replace("附近企业", "").trim();
  334. }
  335. else if (row.cells[i].innerHTML.includes("联系电话")) {
  336. telephone += (telephone.length == 0 ? "" : ',') + row.cells[i + 1].innerHTML.trim();
  337. }
  338. }
  339. }
  340. } else errorAlert("Table inside #icinfo element not found.");
  341. } else console.log("HTML element id \"icinfo\" not found or doesn't contain information.");
  342.  
  343. // 从「主要人员」栏中读取
  344. if (document.getElementById("employees") && !document.getElementById("employees").innerText.includes("暂无信息")) {
  345. let table = document.getElementById("employees").getElementsByTagName("tbody");
  346. if (table.length > 0) {
  347. let rows = table[0].rows;
  348. for (let row of rows) {
  349. for (let i = 0; i < row.cells.length; i++) {
  350. if (row.cells[i].innerHTML.includes("ent-name")) {
  351. let name = row.cells[i].querySelector(".ent-name>.ui-link-shareholder").querySelector("a");
  352. if (!name) name = row.cells[i].querySelector(".ent-name>.ui-link-shareholder"); // 如果高管姓名非超链接,则直接读取 ui-link-shareholder
  353. let _job = row.cells[i + 1].innerText.trim().replace(/\s/g, "").replace(delimiter, ",").replace(job, "").replace(quote, "").replace(commaAtBeginingOrEnd, "");
  354. if (_job.length > 0) {
  355. senior += name.innerText.trim() + ":";
  356. senior += _job;
  357. senior += "、";
  358. }
  359. }
  360. }
  361. }
  362. senior = senior.substring(0, senior.length - 1);
  363. } else errorAlert("Table inside #employees element not found.");
  364. } else console.log("HTML element id \"employees\" not found or doesn't contain information.");
  365.  
  366. // 从「企业概况」栏中读取(香港公司)
  367. if (document.getElementById("appHkOverview") && !document.getElementById("appHkOverview").innerText.includes("暂无信息")) {
  368. let table = document.getElementById("appHkOverview").getElementsByTagName("tbody");
  369. if (table.length > 0) {
  370. let rows = table[0].rows;
  371. for (let row of rows) {
  372. for (let i = 0; i < row.cells.length; i++) {
  373. if (row.cells[i].innerHTML.includes("地址")) {
  374. address = (address.length > 0) ? address : row.cells[i + 1].innerText.replace("查看地图", "").replace("附近企业", "").trim();
  375. }
  376. else if (row.cells[i].innerHTML.includes("企业名称")) {
  377. companyName = (companyName.length > 0) ? companyName : row.cells[i + 1].innerText.trim();
  378. }
  379. else if (row.cells[i].innerHTML.includes("联系电话")) {
  380. telephone += (telephone.length == 0 ? "" : ',') + row.cells[i + 1].innerHTML.trim();
  381. }
  382. }
  383. }
  384. } else errorAlert("Table inside #appHkOverview element not found.");
  385. } else console.log("HTML element id \"icinfo\" not found or doesn't contain information.");
  386.  
  387. // 从「高管信息」栏中读取(香港公司)
  388. if (document.getElementById("hkExecutive") && !document.getElementById("hkExecutive").innerText.includes("暂无信息")) {
  389. let table = document.getElementById("hkExecutive").getElementsByTagName("tbody");
  390. if (table.length > 0) {
  391. let rows = table[0].rows;
  392. for (let j = 0; j < rows.length; j++) {
  393. let row = rows[j];
  394. for (let i = 0, count = 0; i < row.cells.length && count < 4; i++) {
  395. if (row.cells[i].innerHTML.includes("姓名")) {
  396. let _job = rows[j + 1].cells[i + 1].innerText.trim().replace(/\s/g, "").replace(delimiter, ",").replace(job, "").replace(quote, "").replace(commaAtBeginingOrEnd, "");
  397. if (_job.length > 0) {
  398. senior += row.cells[i + 1].innerText.replace("查看简历", "").trim() + ":";
  399. senior += _job;
  400. senior += "、";
  401. count++;
  402. }
  403. }
  404. }
  405. }
  406. senior = senior.substring(0, senior.length - 1);
  407. } else errorAlert("Table inside #hkExecutive element not found.");
  408. } else console.log("HTML element id \"employees\" not found or doesn't contain information.");
  409. addBtns(companyName, telephone, address, senior);
  410. }
  411. }, 1000);
  412. }
  413.  
  414. function szjzyEnhance() {
  415. window.onload = function () {
  416. document.querySelectorAll(".name").forEach((elem) => {
  417. let companyName = elem.firstChild.data;
  418. let id = parseInt(Math.random() * 10000);
  419. let btnHtml = `<a id="btn${id}" data-clipboard-text="${companyName}">复制公司名称</a>`
  420. elem.parentElement.insertAdjacentHTML("afterend", btnHtml);
  421. let clipboard = new ClipboardJS(`#btn${id}`);
  422. clipboard.on('success', function () {
  423. document.querySelector(`#btn${id}`).innerText = "复制成功✅";
  424. window.setTimeout(function () {
  425. document.querySelector(`#btn${id}`).innerText = "复制公司名称";
  426. }, 1000);
  427. });
  428. console.log(companyName);
  429. });
  430. }
  431. }
  432.  
  433. function xibEnhance() {
  434. if (location.href.includes("xib.smartapp.knowlegene.com/marketing/track")) {
  435. window.setInterval(function () {
  436. if (document.querySelector(".el-dialog--primary") && !document.querySelector("#copyCompanyName")) {
  437. let companyName = document.querySelector(".el-dialog--primary").getAttribute("aria-label").split("-")[0];
  438. let copyBtn = `<a id="copyCompanyName" data-clipboard-text="${companyName}"> 复制公司名称</a>`
  439. document.querySelector(".el-dialog--primary").querySelector(".el-dialog__title").insertAdjacentHTML("afterend", copyBtn);
  440. let clipboard = new ClipboardJS(`#copyCompanyName`);
  441. clipboard.on('success', function () {
  442. document.querySelector(`#copyCompanyName`).innerText = "复制成功✅";
  443. window.setTimeout(function () {
  444. document.querySelector(`#copyCompanyName`).innerText = "复制公司名称";
  445. }, 1000);
  446. });
  447. }
  448. }, 100);
  449. } else if (location.href.includes("xib.smartapp.knowlegene.com/marketing/expand")) {
  450. let interval = window.setInterval(function () {
  451. let nameElem = document.querySelector("#knowlegene-marketing > div.exact-marketing-wrapper > div.main-content-box > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(2)");
  452. if (nameElem && nameElem.innerText !== "-") {
  453. let elems = []
  454. // 企业基本信息 -> 企业名称
  455. elems.push(document.querySelector("#knowlegene-marketing > div.exact-marketing-wrapper > div.main-content-box > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(2)"))
  456. // 企业基本信息 -> 注册(不可用)地址
  457. elems.push(document.querySelector("#knowlegene-marketing > div.exact-marketing-wrapper > div.main-content-box > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(7) > td"));
  458. // 企业陌拜营销线索 -> 企业名称
  459. elems.push(document.querySelector("#knowlegene-marketing > div.exact-marketing-wrapper > div.main-content-box > div > div:nth-child(3) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(2)"));
  460. // 企业陌拜营销线索 -> 注册(不可用)地址
  461. elems.push(document.querySelector("#knowlegene-marketing > div.exact-marketing-wrapper > div.main-content-box > div > div:nth-child(3) > div:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(2)"));
  462. // 企业陌拜营销线索 -> 企业联系电话
  463. elems.push(document.querySelector("#knowlegene-marketing > div.exact-marketing-wrapper > div.main-content-box > div > div:nth-child(3) > div:nth-child(2) > table > tbody > tr:nth-child(3) > td:nth-child(2)"));
  464. // 企业陌拜营销线索 -> 办公地址
  465. elems.push(document.querySelector("#knowlegene-marketing > div.exact-marketing-wrapper > div.main-content-box > div > div:nth-child(3) > div:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(4)"));
  466. // 企业陌拜营销线索 -> 董事长/总裁/总经理
  467. elems.push(document.querySelector("#knowlegene-marketing > div.exact-marketing-wrapper > div.main-content-box > div > div:nth-child(3) > div:nth-child(2) > table > tbody > tr:nth-child(4) > td:nth-child(2)"));
  468. for (let elem of elems) {
  469. addCopyBtn(elem, elem.innerText);
  470. }
  471. window.clearInterval(interval);
  472. }
  473. }, 1000);
  474. window.setInterval(function () {
  475. if (document.querySelector(".el-dialog--primary") && !document.querySelector("#copyCompanyName")) {
  476. let companyName = document.querySelector(".el-dialog--primary").getAttribute("aria-label").split("-")[0];
  477. let copyBtn = `<a id="copyCompanyName" data-clipboard-text="${companyName}"> 复制公司名称</a>`
  478. document.querySelector(".el-dialog--primary").querySelector(".el-dialog__title").insertAdjacentHTML("afterend", copyBtn);
  479. let clipboard = new ClipboardJS(`#copyCompanyName`);
  480. clipboard.on('success', function () {
  481. document.querySelector(`#copyCompanyName`).innerText = "复制成功✅";
  482. window.setTimeout(function () {
  483. document.querySelector(`#copyCompanyName`).innerText = "复制公司名称";
  484. }, 1000);
  485. });
  486. }
  487. }, 100);
  488. }
  489. }
  490.  
  491. (function () {
  492. 'use strict';
  493. if (location.href.includes("qixin.com")) {
  494. qixinEnhance();
  495. } else if (location.href.includes("szjzy.org.cn")) {
  496. szjzyEnhance();
  497. } else if (location.href.includes("xib.smartapp.knowlegene.com")) {
  498. xibEnhance();
  499. }
  500.  
  501. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址