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

从HTML页面1跳转至页面2并触发下拉菜单功能的实现问题

解决方案:利用URL哈希实现页面跳转后自动展开下拉菜单

你的问题核心在于跨页面的JavaScript上下文隔离——页面1的代码无法直接操控页面2的函数执行,因为两个页面是独立的执行环境。下面是可行的分步方案:

第一步:简化页面1的链接代码

删掉复杂的onclick函数,直接保留带哈希的链接即可,我们会通过URL的哈希值告诉页面2要执行的操作:

<a class="link2index" href="index2.html#test">Read more about technology hubs in South Africa</a>

(之前的onclick="f();return false;"完全没必要,反而会干扰正常跳转逻辑)

第二步:修改页面2的JavaScript,加载时检测哈希并触发下拉

页面2需要在自身加载完成后,检查URL中的哈希值,如果是#test,就自动调用展开下拉菜单的函数。修改页面2的脚本部分:

<div class="dropdown">
 <button id="test" onclick="myFunction38()" class="dropbtn">Cape Town</button>
 <div id="myDropdown38" class="dropdown-content">
 <a href="#">
 <img src="media/capetown.jpg" alt="South Africa">
 Cape Town-based Labsorganises digital and entrepreneurship bootcamps, and provides an investment of up to $20,000 for every social enterprise developed through their program.
 </a>
 </div>
</div>
<script>
function myFunction38() {
 document.getElementById("myDropdown38").classList.toggle("show");
}

// 页面加载完成后检测哈希
window.addEventListener('load', function() {
  // 如果URL的哈希值是#test
  if (window.location.hash === '#test') {
    myFunction38();
  }
});
</script>

为什么之前的方法无效?

  • 你在页面1里尝试的testwindow = window.load()是错误的API调用,正确的打开新窗口是window.open(),但即使这样,浏览器的同源策略限制也会阻止页面1直接操作页面2的DOM或函数。
  • 页面1里的window.onload = myFunction38()只会绑定到页面1的加载事件,和页面2完全无关。

这个方案的逻辑是:通过URL哈希传递"触发信号",让页面2自己在加载时识别这个信号并执行对应的操作,完全避开跨页面的上下文限制,简单又可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:54:43