Chrome书签脚本报错:URL转换后参数显示undefined的排查求助
问题排查与修复方案
问题原因
核心问题是**location.pathname不包含URL哈希(#)后的内容**。你的示例URL中,目标值1234567位于哈希#/dashboard/1234567?pageId=...内部,而location.pathname仅能获取到/reporting-dashboard/,拆分后数组长度不足,导致pathArray[3]取值为undefined。
修复后的书签脚本
// 从哈希部分提取目标ID const hashPath = location.hash.slice(1); // 去掉开头的#,得到"/dashboard/1234567?pageId=..." const hashParts = hashPath.split('/'); const namespaceId = hashParts[2]; // 对应哈希路径中的1234567 // 拼接新URL(自动适配当前环境的协议和主机名) const newUrl = `${location.protocol}//${location.hostname}/tool/permissions/resources?namespace=${namespaceId}`; // 打开新页面跳转 window.open(newUrl);
关键说明
location.hash.slice(1)移除哈希开头的#,将哈希内容转为可处理的路径格式- 拆分后的
hashParts数组为['', 'dashboard', '1234567', '?pageId=...'],取索引2即可拿到目标ID - 使用模板字符串拼接URL更简洁,同时保留了自动适配不同环境主机名的逻辑
内容的提问来源于stack exchange,提问作者Touring_0433
相关产品推荐
相关产品推荐

