将 Text/Image URL 替换为 CSS

Replace Text/Image URL with CSS

我正在尝试为用于 Eve Online 论坛的时尚插件制作自定义样式。我正在尝试调整头像图像的大小,因为它对我来说太小了。然而,它使用的是低质量图像,并且在调整大小时看起来太粗糙,所以我试图通过替换部分文本或替换 url(更容易的)来弄清楚如何使用更大的图像。图片中,唯一不同的是一段显示尺寸的文字。

参见:

meta.eveonline.com/erika_mizune/45/2168_1.png meta.eveonline.com/erika_mizune/90/2168_1.png

所以基本上 45(原始)需要用 90 替换,以减少颗粒感。

URL 到 Post:https://meta.eveonline.com/t/avatar-size-category-adjustment/9032

时尚插件:https://userstyles.org/styles/144974/avatar-category-adjustment

我调整图片大小的代码是这样的:

 .topic-avatar img.avatar
  {
    height: 75px;
    width: 75px;
    border-radius: 0;
  }

  .topic-avatar
  {
    width: 75px !important;
  }

我在发帖前尝试进行搜索,但没有找到适合我需要的内容。

谢谢!


编辑 1:我尝试按照建议切换到 tampermonkey 以使用 JS,但没有用。原代码如下:

    <div class="topic-avatar">
        <a class="trigger-user-card main-avatar" href="/u/Erika_Mizune"
            data-user-card="Erika_Mizune"> <img alt="" width="45" height="45"
            src="https://cdn-enterprise.discourse.org/eveonline/user_avatar/meta.eveonline.com/erika_mizune/45/2168_1.png"
            title="Erika_Mizune" class="avatar"></a>
        <div class="poster-avatar-extra"></div>
    </div>

我在 tampermonkey 中的脚本:

    var imagelist = document.getElementsByClassName("avatar");
    imagelist.foreach(function(element) {
        element.src = element.src.replace("/45/", "/90/");
    });

编辑 2:尝试在控制台中使用调试后,我收到 .foreach 不是函数的错误,并尝试尝试以下操作:

尝试 1:

var imagelist = document.getElementsByTagName("img");
        imagelist.foreach(function(element) {
            element.src = element.src.replace("/45/", "/90/");
        });

尝试 2:

var imagelist = Array.from(document.getElementsByClassName('avatar'));
imagelist.foreach(function(element) {
    element.src = element.src.replace("/45/", "/90/");
});

尝试 3:

   var imagelist = Array.from(document.getElementsByTagName('img'));
imagelist.foreach(function(element) {
    element.src = element.src.replace("/45/", "/90/");
});

所有这些尝试都在控制台中返回了相同的错误,即 .foreach 不是函数。

试试这个?将 background: url(meta.eveonline.com/erika_mizune/90/2168_1.png) no-repeat !important; 添加到您的 img CSS.

.topic-avatar img.avatar {
  height: 75px;
  width: 75px;
  border-radius: 0;
  background: url(meta.eveonline.com/erika_mizune/90/2168_1.png) no-repeat !important;
}

.topic-avatar {
  width: 75px !important;
}

无法按照您描述的方式将 html 内容更改为 CSS。我建议使用 Javascript 来更改 <img> 标签的 src。做类似

的事情
var imagelist = document.getElementsByClassName("forum_image_class");
imagelist.foreach(function(element){
    element.src = element.src.replace("/45/", "/90/");
}

我认为 javascript 解决方案是正确的方法。

tampermonkey的几行js真的不好说。是否可以显示完整的文件?或者 post 关于 jsfiddle 的例子之类的?

在 Chrome Inspector 中自己调试此类问题很容易,只需在代码中键入 "debugger" 并在 Chrome Inspector 中打开“源代码”选项卡([= 中的 F12 按钮) 25=]).检查器将停在该行,您可以看到不同变量的值。例如:

首先,在 Chrome 浏览器中打开 Chrome Inspector。然后用调试器行加载页面:

var imagelist = document.getElementsByClassName("forum_image_class");
debugger;
imagelist.foreach(function(element){
    element.src = element.src.replace("/45/", "/90/");
}

浏览器将在调试器行停止。在控制台中键入 'imagelist' 并按回车键查看其当前值。它可能为空,在这种情况下 getElementsByClassName 不会检索任何内容。这可能由于几个不同的原因而发生。或者图像列表数组可能会填充但 replace() 未按预期工作。您是否可以找出发生的情况并在此处报告?

另外:小心使用 .replace()。你必须用反斜杠转义某些字符,你应该知道那些特殊字符是什么。在这种情况下,您可能需要也可能不需要转义正斜杠。