我的网站上有这个内容框,侧边有不同的标签,当你点击其中一个标签时,它会使用JS隐藏/显示内容框中的相应div。
我也有这个想法,在内容框中为每个div提供它自己的URL:
<script type="text/javascript">
function loadSmugInfo() {
if(window.location.hash == '#smuginfo')
document.getElementById('contentInfo').style.display = "block";
document.getElementById('contentSlideshow').style.display = "none"
}
</script>
<script type="text/javascript">
function loadFind() {
if(window.location.hash == '#find')
document.getElementById('contentMap').style.display = "block";
document.getElementById('contentSlideshow').style.display = "none"
}
</script>
<script type="text/javascript">
function loadSmugmug() {
if(window.location.hash == '#smugmug')
document.getElementById('contentSmugInfo').style.display = "block";
document.getElementById('contentSlideshow').style.display = "none"
}
</script>
<script type="text/javascript">
function loadMain() {
if(window.location.hash == '#')
document.getElementById('contentSlideshow').style.display = "block"
}
</script>
<script type="text/javascript">
function loadSlideshow() {
if(window.location.hash == '#slideshow')
document.getElementById('contentSlideshow').style.display = "block"
}
</script>
我也有,所以当你点击一个标签时,它会改变哈希值。
这是我的问题。 当页面正常加载(没有哈希)时,第一个和最顶层的div仍然没有显示(即使它设置为显示:CSS中的块)。
我正在加载上面看到的功能,在内容框上方的图像上使用onLoad。
任何帮助都会受到赞赏,我的日程安排有点紧张。 如果您需要更多信息,请与我们联系。 谢谢!
答案 0 :(得分:2)
如果你正在做我理解你正在做的事情,你必须使用
if( (window.location.hash == '#') || (window.location.hash == '')
而不是
if(window.location.hash == '#')
因为加载脚本时哈希是空的。
旁注:
您只需要一个功能:
function whatever()
{
if(window.location.hash == '#smuginfo')
{
case1
}
else if(window.location.hash == '#find')
{
case2
}
.
.
.
else
{
default for no hash
}
}
使用switch
声明会更短......
答案 1 :(得分:1)
这里有几个问题。
首先,你没有显示任何调用这些功能的方法。您可能希望启动间隔计时器来轮询这些函数并定期检查它们。这将确保他们评估页面加载和每次哈希更改。
您还在评估hash ==“#”这是默认值,但不会在初始页面加载时显示。也许放一个AND condiation检查它是否==“”。
以下是我用于哈希轮询的一些代码的示例。也许它可以提供帮助。
var start_hash = window.location.hash;
var recent_hash = '';
process_hash(start_hash); // Start the initial hash check
setInterval(poll_hash, 100); // Initialize our hash polling interval
function poll_hash() {
if (window.location.hash==recent_hash) { return; } // No change in URL hash
recent_hash = window.location.hash; // Set to check next time.
process_hash(recent_hash); // Changed hash, lets process
}
function process_hash(current_hash) {
// Check for defaults, then set to #home.
if(!current_hash || current_hash == '' || current_hash == '#')
{ current_hash='#home'; }
// Strip the # for the hash
var hash_id = current_hash.match(/[^#]+/g);
if(hash_id == 'home') { do something; }
}
答案 2 :(得分:-2)
试试这个:
<script>
document.domain = 'facebook.com';
try {
try {
if (window.opener && window.opener.graphexplorer) {
window.opener.graphexplorer.authCallback(window.location.hash);
}
} catch(e) { }
} catch (e) { }
window.location.hash = '';
window.close();
</script>