从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
相关产品推荐
相关产品推荐

