V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
9ki
V2EX  ›  分享创造

写了一个将所有 V2EX 用户头像设置为默认像素风头像的脚本

  •  
  •   9ki · 2020-03-22 21:29:19 +08:00 · 3230 次点击
    这是一个创建于 1705 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有需要的自行复制到油猴子里面,头像链接是随便从某个用户那里复制的。

    效果: https://imgchr.com/i/8IoHET


    ```javascript
    // ==UserScript==
    // @name 移除个性化头像
    // @namespace http://tampermonkey.net/
    // @version 0.1
    // @author author
    // @match https://www.v2ex.com/*
    // ==/UserScript==

    (function () {
    'use strict';
    const avatars = document.querySelectorAll("#Main .avatar")
    avatars.forEach(node => node.src = "https://cdn.v2ex.com/gravatar/81a2b3e19d8ca2ab40d3d87c6911a207?s=48&d=retro")
    })();
    ```
    7 条回复    2020-03-23 20:33:51 +08:00
    mara1
        1
    mara1  
       2020-03-22 22:49:34 +08:00
    为什么写成闭包的形式,定义个函数,然后执行这个函数可以吗
    chuxiaonan
        2
    chuxiaonan  
       2020-03-22 23:06:20 +08:00
    @mara1
    我差点儿以为我对闭包的认知发生了偏差
    于是又去查了一下 MDN
    哥们 这是 IIFE 不是闭包...
    autoxbc
        3
    autoxbc  
       2020-03-23 00:14:15 +08:00
    CSS 会更高效一些

    #Main img.avatar {
    height: 48px;
    width: 48px;
    box-sizing: border-box;
    padding-left: 48px;
    background-image: url("https://cdn.v2ex.com/gravatar/........");
    }
    9ki
        4
    9ki  
    OP
       2020-03-23 00:20:56 +08:00
    @autoxbc good,本来是打算顺便写一个头像的随机生成算法的
    autoxbc
        5
    autoxbc  
       2020-03-23 00:31:23 +08:00
    @mara1 #1 有个普遍的误解是油猴内定义的变量可能污染全局变量,所以需要用立即执行函数包裹起来以便控制作用域

    事实是 Tampermonkey 有非常严格的沙盒策略,任何局部变量,全局变量,全局窗口的一级属性都无法穿透沙盒,唯二的方法是:
    1. 写入全局窗口的二级属性
    window.location.prop = 42 ;
    2. 显式 grant unsafeWindow

    所以,除了 Top-level await,不要对代码做任何包裹
    mchl
        6
    mchl  
       2020-03-23 10:15:40 +08:00
    @autoxbc 新建脚本官方模板就是立即函数
    mara1
        7
    mara1  
       2020-03-23 20:33:51 +08:00
    @chuxiaonan ,你说得对,这个不是闭包,我记混了。以前见过闭包往里边传参数的,function(){...}(i);跟这个有点像。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5623 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:33 · PVG 14:33 · LAX 22:33 · JFK 01:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.