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

Firefox书签小工具单次点击实现网页跳转及下拉提交方案咨询

解决Firefox书签工具单次点击完成页面跳转+表单提交的问题

你当前的代码需要点击两次才能完成操作,核心原因是:window.open 切换页面后,后续的DOM操作代码其实是在原页面执行的,而非新打开的目标页面。第一次点击仅完成页面跳转,第二次点击才会在目标页面触发表单操作。

下面提供两种可行的单次点击解决方案:

方案一:监听新窗口加载事件(适合同源场景)

如果你的书签工具在与目标页面同源的页面执行,可以直接获取新窗口对象并监听其加载完成事件:

let targetWin = window.open("https://www.foreca.se/Sverige/Stockholm/Stockholm", '_self');
targetWin.onload = function() {
  targetWin.document.querySelector("#stationForm > select.stationSelect > option[value='1020002460']").selected = true;
  targetWin.document.getElementById("stationForm").submit();
};

方案二:绑定页面加载完成事件(兼容跨域场景)

若存在跨域限制(浏览器会阻止原页面访问新窗口DOM),可以将逻辑封装为自执行函数,在页面跳转后自动监听目标页面的加载状态:

javascript:(function(){
  window.location.replace("https://www.foreca.se/Sverige/Stockholm/Stockholm");
  function executeFormAction() {
    try {
      document.querySelector("#stationForm > select.stationSelect > option[value='1020002460']").selected = true;
      document.getElementById("stationForm").submit();
      document.removeEventListener('DOMContentLoaded', executeFormAction);
    } catch(err) {}
  }
  document.addEventListener('DOMContentLoaded', executeFormAction);
})();

说明

  • 方案二使用 DOMContentLoaded 事件替代固定延迟,能更精准地在页面DOM准备就绪后执行操作,避免因网络速度差异导致的延迟过长或过短问题;
  • 最终使用时需要将代码压缩为单行(可在线搜索JS压缩工具),再添加到书签的URL中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:05:14