Firefox 关键词搜索结合 JavaScript 实现智能行程规划器

星辰吖_4140

星辰吖_4140

2026-01-22

1033人浏览

原创

Firefox 关键词搜索结合 JavaScript 实现智能行程规划器

本文介绍如何在 firefox 中通过 javascript 书签脚本(bookmarklet)扩展关键词搜索功能,动态插入当前日期、预设地址(如“h”代表家、“w”代表公司),并构建符合 ns 荷兰铁路行程规划器要求的完整 url。

Firefox 原生的关键词搜索(Keyword Search)功能强大但静态——它仅支持 %s 单一占位符替换,无法处理日期、多参数映射或条件逻辑。要实现你所需的「旅行规划器」:支持起点/终点双输入、自动填充当前时间(ISO 格式 YYYY-MM-DDTHH:MM)、并允许用简写(如 h/w)映射到预设地址,必须借助 JavaScript 书签脚本(Bookmarklet),而非纯关键词搜索。

以下是一个经过优化、健壮且可直接部署的解决方案:

password-manager
password-manager

本地密码管理技能,可添加、编辑、删除、搜索密码,支持分类和备注,数据本地存储,支持导入导出和备份。用户提及密码、账号、密码管理、保存密码或查找密码时使用。

下载

✅ 推荐 Bookmarklet 代码(已修复原问题中的语法与逻辑缺陷)

javascript:(function(){
    const home = 'Amsterdam Centraal';  // ← 替换为你的真实家庭车站名(需为 NS 可识别站名)
    const work  = 'Utrecht Centraal';   // ← 替换为你的真实工作车站名

    // 当前时间:精确到分钟,格式为 '2024-06-15T14:30'
    const now = new Date();
    const tijd = `${now.getFullYear()}-${String(now.getMonth()+1).padStart(2,'0')}-${String(now.getDate()).padStart(2,'0')}T${String(now.getHours()).padStart(2,'0')}:${String(now.getMinutes()).padStart(2,'0')}`;

    // 构建参数对象(完全匹配 NS Reisplanner API 要求)
    const params = {
        vertrek:         prompt('出发地(输入 "h" 使用家庭地址):', home),
        vertrektype:     'treinstation',
        aankomst:        prompt('目的地(输入 "w" 使用工作地址):', work),
        aankomsttype:    'treinstation',
        type:            'vertrek',
        tijd:            tijd,
        firstMileModality:    'PUBLIC_TRANSPORT',
        lastMileModality:     'PUBLIC_TRANSPORT',
        disabledTransportModalities: ''
    };

    // 简写映射逻辑
    if (params.vertrek === 'h') params.vertrek = home;
    if (params.aankomst === 'w') params.aankomst = work;

    // 拼装最终 URL(注意:NS 使用 fragment hash + query 参数,需手动构造)
    const baseUrl = 'https://www.ns.nl/reisplanner/#/';
    const searchParams = new URLSearchParams(params);
    const finalUrl = `${baseUrl}?${searchParams.toString()}`;

    location.href = finalUrl;
})();

? 使用步骤

  1. 复制上方整段代码(从 javascript:(function(){ 开始,到 })(); 结束);
  2. 在 Firefox 地址栏中右键 → 「添加书签」→ 名称填 NS,网址粘贴该代码;
  3. 设置关键词:点击书签 → 「编辑」→ 在「关键字」栏填入 ns(或其他你喜欢的短关键词,如 tp);
  4. 使用时,在地址栏输入 ns + 回车 → 弹出两个提示框,分别输入起点和终点(支持 h/w)→ 自动跳转至 NS 行程规划页。

⚠️ 注意事项与最佳实践

  • 车站名称必须准确:NS 的行程规划器依赖其内部车站数据库。请使用 NS 官网车站搜索 确认完整、标准站名(如 Rotterdam Centraal,而非 Rotterdam)。
  • 时间精度:脚本使用本地系统时间生成 tijd 参数(格式 YYYY-MM-DDTHH:MM),不带秒和时区后缀,完全符合 NS 接口要求;避免使用 .toISOString().slice(0,16)(会截断错误,导致 T 后缺分钟)。
  • 安全性与兼容性:此为客户端脚本,不发送数据至任何服务器;兼容 Firefox 102+(含 ESR);Chrome/Edge 用户也可复用,但关键词搜索需配合 Custom Search Engine 扩展实现类似体验。
  • 进阶建议:若需免弹窗(如通过地址栏直接传参),可改用 WebExtension API 开发专用插件,实现更深层集成。

该方案兼顾简洁性与实用性,将动态逻辑、用户友好性和接口合规性融为一体,是你定制化 Firefox 行程规划工作流的理想起点。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

javascript word java edge yy

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2866

5

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.06

5779

7

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

2026.03.24

4107

22

edge是什么浏览器
edge是什么浏览器

Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.21

3062

5

IE浏览器自动跳转EDGE如何恢复
IE浏览器自动跳转EDGE如何恢复

ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.03.05

2874

4

如何解决Edge打开但没有标题的问题
如何解决Edge打开但没有标题的问题

若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

2025.04.24

3232

6

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3208

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

5189

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3849

9

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.8万人学习