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

Chrome扩展表单提交问题:URL中ID显示为[object%20Event]

解决Chrome扩展中URL拼接出现[object%20Event]的问题

嘿,我明白你现在卡在哪了——提交ID后新窗口的URL里,本该是ID的位置变成了[object%20Event],这事儿其实是你把事件对象当成了输入框的ID值来用了,咱们一步步把它搞定:

问题根源拆解

你的JS代码里,addEventListener('submit', a)会把submit事件的Event对象作为参数传给函数a,所以函数里的id变量根本不是用户输入的ID字符串,而是事件对象本身。当你把它拼进URL时,JS会把事件对象转成字符串[object Event],URL编码后就变成了[object%20Event]。另外,表单默认的提交行为会刷新页面,这也不是你想要的效果,得一起处理掉。

修正方案

第一步:给输入框添加ID标识

先修改HTML里的输入框,给它加一个id属性,方便我们精准获取用户输入的内容:

<head> 
  <script type="text/javascript" src="ChromeFacebook.js"></script> 
</head> 
<body> 
  <h1 id="title"> Enter ID: </h1> 
  <h2 id="paragraphs"> Comments </h2> 
  <form id="form1"> 
    <!-- 新增id="inputId" -->
    <input type="text" id="inputId" size="60" placeholder="Photos-commented">
    <input type="submit" value="Search"> 
  </form> 
</body> 
</html>

第二步:修改JS逻辑,正确处理事件和输入值

替换你的JS代码,改成下面这样:

// 获取表单和输入框元素
const form = document.getElementById('form1');
const input = document.getElementById('inputId');

function handleSubmit(event) {
    // 阻止表单默认提交行为,避免页面刷新
    event.preventDefault();
    
    // 获取并清理用户输入的ID值(去掉首尾空格)
    const userId = input.value.trim();
    
    // 可选:添加输入为空的判断,提升体验
    if (!userId) {
        alert('请输入有效的ID!');
        return;
    }
    
    // 拼接完整URL并打开新窗口
    const fullUrl = `https://www.facebook.com/search/str/${userId}/photos-commented`;
    window.open(fullUrl, "a");
}

// 给表单绑定提交事件监听
form.addEventListener('submit', handleSubmit);

关键修改点说明

  1. 阻止默认行为:用event.preventDefault()避免表单提交时刷新页面;
  2. 正确获取输入值:通过input.value拿到用户输入的ID,trim()用来清理多余的首尾空格;
  3. 更清晰的URL拼接:用ES6模板字符串拼接URL,比传统字符串拼接更直观;
  4. 输入校验:新增空值判断,避免用户误提交空内容。

额外提醒

如果你的Chrome扩展需要访问Facebook域名,别忘了在manifest.json里添加对应的权限:

"permissions": [
    "https://www.facebook.com/*"
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:41:37