gpt4 book ai didi

javascript - 手动输入url时location.hash问题,脚本不运行

转载 作者:行者123 更新时间:2023-11-30 10:48:35 29 4
gpt4 key购买 nike

我试图通过使用散列变量来访问页面中的某些选项卡。

它按预期工作:

  • 页面内的链接
  • 使用地址 (test.php#tab2) 打开一个新的浏览器窗口/标签

它在以下情况下不起作用:

  • 当您已经加载了 test.php 并在地址栏中手动输入“#tab2”(使其成为 test.php#tab2 并按回车结束) .页面未加载且脚本未运行。

我在不同的浏览器上试过了,结果都差不多。在 Chrome 中,您可以在地址栏中选择整个 url,然后(再次)按 enter,这有效 - 但一般来说它是相同的问题。

我已经从我的页面中取出脚本并制作了一个小模板,完整代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="en" />
<script type="text/javascript" src="inc/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.fn.showPage = function(hash) {
if (hash === '#tab1' || hash === '') {
if ($('#tab1').is(':hidden')) {
$('#tab1').show();
$('#tab2, #tab3').hide();
}
} else if (hash === '#tab2') {
if ($('#tab2').is(':hidden')) {
$('#tab2').show();
$('#tab1, #tab3').hide();
}
} else if (hash === '#tab3') {
if ($('#tab3').is(':hidden')) {
$('#tab3').show();
$('#tab1, #tab2').hide();
}
}
}

$('.menu').click(function(e){
e.preventDefault();
var hash = $(this).attr('id');
window.location.href = 'test.php' + hash;
$(document).showPage(hash);
});

var hash = location.hash;
$(document).showPage(hash);
});
</script>
</head>

<body>

<a href="#" id="#tab1" class="menu">Tab 1</a> <a href="#" id="#tab2" class="menu">Tab 2</a> <a href="#" id="#tab3" class="menu">Tab 3</a>

<div id="tab1">

Tab 1

</div>

<div id="tab2" style="display:none;">

Tab 2

</div>

<div id="tab3" style="display:none;">

Tab 3

</div>

</body>
</html>

我希望我已经说得够清楚了。感谢任何反馈!

最佳答案

如果页面已加载并且您将 #... 附加到 URL,则不会执行任何操作,因为您不会触发 .menu 单击处理程序,并且不会执行任何操作else 使 .showPage 函数执行。

您可能想改用 windowhashchange 事件。这样,每当哈希发生变化(链接/手动/等)时,您都可以执行 .showPage

http://jsfiddle.net/yJTJz/

$(window).bind('hashchange', function(){
$(document).showPage(location.hash); // does include the # for the record
});

关于javascript - 手动输入url时location.hash问题,脚本不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6857982/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com