You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tampermonkey实现MAC地址自动格式化脚本失效求助

MAC地址自动格式化脚本问题分析与修复

嘿,我来帮你捋捋这个脚本为啥不好使,以及怎么修复它~

原脚本的核心问题

你的初始脚本没法正常工作,主要踩了这几个坑:

  • 数组处理翻车:最后用macs.toString()会把数组元素用逗号连起来,比如处理后的内容会变成"00,:,00,:,...",完全不是我们要的MAC格式。
  • 逻辑判断混乱:多个else if的顺序和逻辑有问题,比如else if (macs[col] != "")会把后续的判断都拦住,导致添加冒号的逻辑根本跑不起来。
  • 没考虑删除操作:用户按删除/退格键的时候,脚本还是会瞎加冒号,格式直接乱掉。
  • 没校验输入合法性:不管输入的是不是十六进制字符,都往里面塞,很容易出问题。

修正后的解决方案

结合@freginold的方案微调后的脚本就能正常工作啦,完整代码和逻辑说明如下:

var back = true;

function isHex(char) {
    // 检查字符是不是十六进制合法字符(0-9、a-f、A-F)
    if (!isNaN(parseInt(char))) {
        return true;
    } else {
        switch (char.toLowerCase()) {
            case "a":
            case "b":
            case "c":
            case "d":
            case "e":
            case "f":
                return true;
        }
        return false;
    }
}

// 监听按键按下,判断是不是删除/退格键,避免删除时乱加冒号
document.getElementById("MAC").addEventListener('keydown', function() {
    var key = event.keyCode || event.charCode;
    if( key == 8 || key == 46 ) {
        back = false;
    }
});

// 监听按键抬起,处理MAC地址的自动格式化
document.getElementById("MAC").addEventListener('keyup', function() {
    var key = event.keyCode || event.charCode;
    var mac = document.getElementById('MAC').value;
    var newMac = mac.replace("-", ""); // 把输入里的短横线去掉,统一用冒号分隔

    // 只有满足这些条件才加冒号:最后两个字符都是合法十六进制、总长度没超过16(12个字符+4个冒号)、不是删除操作
    if ((isHex(mac[mac.length - 1]) && (isHex(mac[mac.length - 2])) && (mac.length <= 16) && (back))) {
        newMac = newMac + ":";
    }
    back = true;
    document.getElementById('MAC').value = newMac; // 更新输入框的内容
});

代码逻辑拆解

  • isHex函数:专门把关输入的字符,确保只有十六进制的合法字符才会被处理,避免乱码。
  • keydown监听:记住用户是不是在删字符,这样删除的时候就不会硬加冒号,体验更顺畅。
  • keyup处理逻辑:
    1. 先统一清理掉输入里的短横线,保证格式一致。
    2. 当连续输入2个合法字符、总长度没超标,且不是删除操作时,自动插入冒号。
    3. 最后把处理好的内容放回输入框,完美实现自动格式化。

这样修改后,脚本就能稳稳地帮你在输入MAC地址时自动补全冒号啦~

内容的提问来源于stack exchange,提问作者Hitmare Chelien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:25:33