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

基于Firefox关键词搜索的行程规划工具JavaScript实现需求

Firefox关键词搜索行程规划工具优化实现

需求说明

利用Firefox关键词搜索功能实现荷兰铁路(NS)行程规划工具,核心要求:

  • 自动在URL中填入符合格式的当前日期时间(格式如2023-03-03T15:59)
  • 支持地址缩写快速替换:输入h对应家庭地址,w对应工作地址

Firefox关键词搜索原理:将输入字符串填入预定义URL的%s占位符,例如google.com/search?q=%s搭配输入cats and dogs会跳转至https://www.google.com/search?hl=en&q=cats%20and%20dogs。

目标URL格式:

https://www.ns.nl/reisplanner/#/?vertrek=STARTLOCATION%20Centraal&vertrektype=treinstation&aankomst=ENDLOCATION&aankomsttype=treinstation&type=vertrek&tijd=2023-03-03T15:59&firstMileModality=PUBLIC_TRANSPORT&lastMileModality=PUBLIC_TRANSPORT&disabledTransportModalities=

优化后的完整代码

javascript:var s='%s'; 
// 地址缩写映射表,可自行扩展更多缩写
const addressMap = {
    'h': 'My Home Street 1 My Home Town',
    'w': 'My Work Street 1 Work City'
};
// 生成符合要求的当前日期时间字符串
const currentDateInRightFormat = new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].slice(0,16);
// 构建基础URL,直接填入当前时间
let url = 'https://www.ns.nl/reisplanner/#/?vertrek=%s&vertrektype=treinstation&aankomst=%s&aankomsttype=treinstation&type=vertrek&tijd=' + currentDateInRightFormat + '&firstMileModality=PUBLIC_TRANSPORT&lastMileModality=PUBLIC_TRANSPORT&disabledTransportModalities=';

// 处理带引号的空格地址(保留原逻辑)
let t = '';
let qc = 0;
const chunks = url.split('%s'); 

for(let i=0; i<s.length; i++){
    if(s.charAt(i)=='%22') qc ^= 1; 
    t += ((s.charAt(i)==' ' && qc)?'^':s.charAt(i)); 
}
const args = t.split(/\s/); 

// 拼接最终URL并替换缩写
let nurl = ''; 
for(let i=0; i<chunks.length; i++){
    nurl += chunks[i]; 
    if(args[i] !== undefined){
        // 优先替换缩写,否则还原带空格的地址
        const finalArg = addressMap[args[i]] || args[i].replace(/\^/g,' ');
        // 编码地址避免URL格式错误
        nurl += encodeURIComponent(finalArg);
    }
}
location.replace(nurl);

关键优化点

  • 日期自动填充:将生成的currentDateInRightFormat直接拼接进URL的tijd参数,无需手动输入日期,确保每次使用都是当前时间。
  • 缩写替换逻辑:通过addressMap对象存储缩写与地址的对应关系,处理输入参数时自动检测并替换,可随时扩展更多缩写(如添加f代表朋友家地址)。
  • 参数编码:添加encodeURIComponent对地址参数进行编码,避免带空格或特殊字符的地址导致URL失效。
  • 语法修复:修正原代码中currentDateInRightFormat末尾多余的括号,使用let/const声明变量避免全局污染。

使用示例

  • 输入h w:起点替换为家庭地址,终点替换为工作地址,自动填充当前时间
  • 输入"Amsterdam Centraal" w:起点为阿姆斯特丹中央车站,终点替换为工作地址
  • 输入h "Rotterdam Centraal":起点为家庭地址,终点为鹿特丹中央车站

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:08:24