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

MikroTik热点特定错误触发显示指定图片的技术问询

MikroTik热点错误页代码验证与优化

原代码存在的问题

  1. 语法错误:第一个错误分支中直接在JavaScript代码块内写入<img>标签,不符合JS语法规范,会导致代码执行失败。
  2. 匹配逻辑失效:第四个判断条件error == "User $(username) not found"无法正确匹配,因为MikroTik会将$(username)替换为实际用户名,最终错误信息是类似User admin not found的具体内容,原条件永远无法命中。
  3. API使用不规范:依赖document.write输出内容,在页面加载完成后调用可能会覆盖整个页面,存在兼容性风险。

修正优化后的代码

$(if error)<script type="text/javascript">
var errorMsg = "$(error)";
// 创建统一的错误容器,方便样式控制
var errorContainer = document.createElement('div');

if (errorMsg.includes("simultaneous session limit reached")) {
    // 动态创建图片元素
    var chatImg = document.createElement('img');
    chatImg.src = "/chat.gif";
    chatImg.alt = "点击咨询客服";
    errorContainer.appendChild(chatImg);
} else if (errorMsg === "invalid password") {
    errorContainer.textContent = "密码错误,请重新输入";
} else if (errorMsg === "no valid profile found") {
    errorContainer.textContent = "上网时长已耗尽,请重新获取上网凭证";
} else if (errorMsg.startsWith("User ") && errorMsg.endsWith(" not found")) {
    errorContainer.textContent = "用户名不存在,请检查输入";
} else {
    // 其他未定义错误,直接显示原始信息
    errorContainer.textContent = errorMsg;
}

// 将错误内容插入页面
document.body.appendChild(errorContainer);
</script>$(endif)

优化说明

  • 修复核心语法问题:通过DOM API动态创建并插入图片元素,替代原代码中非法的HTML直接写入方式,确保代码正常执行。
  • 修复匹配逻辑:针对“用户不存在”的错误,通过字符串首尾匹配的方式判断错误格式,确保能正确命中该类错误。
  • 优化内容输出方式:使用DOM元素创建与插入替代document.write,避免页面覆盖风险,同时便于后续添加CSS样式美化错误提示。
  • 中文本地化适配:将所有错误提示文本替换为中文,更符合国内用户使用习惯。
  • 可扩展性提升:统一使用错误容器,后续可通过添加class属性为错误提示设置统一样式,比如调整字体、颜色、间距等。

内容的提问来源于stack exchange,提问作者Abdias Rivera Bautista

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:35:20