Greasy Fork

Greasy Fork is available in English.

Quicker-显示用户头像

在讨论区等地方显示头像

当前为 2023-07-23 提交的版本,查看 最新版本

// ==UserScript==
// @name        Quicker-显示用户头像
// @version     1.0
// @description 在讨论区等地方显示头像
// @match       https://getquicker.net/*
// @grant       none
// @namespace http://greasyfork.icu/users/1082425
// ==/UserScript==

(function() {
  'use strict';

  function getAvatarImageSrc(uri) {
    var cachedData = localStorage.getItem(uri);
    if (cachedData) {
      var data = JSON.parse(cachedData);
      return data.src;
    }

    var xhr = new XMLHttpRequest();
    xhr.open('GET', uri, false);
    xhr.send();
    if (xhr.status === 200) {
      var htmlContent = xhr.responseText;
      var parser = new DOMParser();
      var doc = parser.parseFromString(htmlContent, 'text/html');
      var xpathResult = doc.evaluate('/html/body/div[1]/div/div[2]/h2/div[1]/img', doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
      var avatarImage = xpathResult.singleNodeValue;
      if (avatarImage) {
        var newData = {
          link: uri,
          src: avatarImage.src
        };
        localStorage.setItem(uri, JSON.stringify(newData));

        return avatarImage.src;
      }
    }
    return null;
  }

  var elements = document.querySelectorAll('.avatar');
  var userlinks = document.querySelectorAll('.font12 .user-link');
  for (var i = 0; i < elements.length; i++) {
    var element = elements[i];
    var userlink = userlinks[i];

    var src = getAvatarImageSrc(userlink.href);
    if (!src) {
      continue;
    }

    var imgElement = document.createElement('img');
    var aElement = document.createElement('a');

    imgElement.src = src;
    imgElement.alt = 'Avatar';
    imgElement.style.borderRadius = '50%';

    var size = Math.min(parseInt(getComputedStyle(element).width), parseInt(getComputedStyle(element).height));
    imgElement.style.width = size + 'px';
    imgElement.style.height = size + 'px';

    aElement.href = userlink.href;
    aElement.style.width = getComputedStyle(element).width;
    aElement.style.height = getComputedStyle(element).height;
    aElement.target = '_blank';
    aElement.appendChild(imgElement);

    element.parentNode.replaceChild(aElement, element);
  }
})();