【问题标题】:Panel only showing on specific page面板仅显示在特定页面上
【发布时间】:2013-02-25 00:28:45
【问题描述】:

我需要一个有效的 javascript 代码,它只在我网站的一个特定页面上显示某个面板,并在其余页面上隐藏它。这是一个论坛式的设置。

这是我目前得到的。

<script type="text/javascript">

function ShowPanel()
{
if(document.location.href == "http://www.exampleurl.com")
{document.getElementById("panel").style.display = "block";}
else
{document.getElementById("panel").style.display = "none";}
}

</script>

        <div id="panel" onload="ShowPanel">
            Example text.
        </div>

根据我查到的示例代码,这一切似乎都是合理的,但显然某处存在错误。什么都没有发生。

感谢您的检查!

【问题讨论】:

    标签: javascript location document if-statement


    【解决方案1】:

    问题在于 onload 事件不能用于 DIV 元素。 onload 只能用于文档正文或外部资源(iframe、图像、脚本)。

    最好的办法是将 JavaScript 放在页面底部。

    例如

    <div id="panel">
        Example text.
    </div>
    
    <script language="JavaScript">
    if(document.location.href == "http://www.exampleurl.com"){
        document.getElementById("panel").style.display = "block";
    }
    else {
        document.getElementById("panel").style.display = "none";
    }    
    </script>
    

    【讨论】:

    • 谢谢,这实际上可能是问题所在。我目前正在寻找合适的位置来放置和调用脚本;将它放在底部没有成功。我将联系论坛服务开发人员以获取此方面的支持。
    • 确实,认为这个问题已经解决了。论坛在没有函数和调用行的情况下运行。这很奇怪,但是嘿。
    【解决方案2】:

    通过在控制台中输入document.location.href(通常是F12)来检查页面上的实际内容。例如,即使 URL 中没有斜杠,大多数浏览器也会在服务器名称上添加尾部斜杠。匹配必须准确,您的代码才能按所写的那样工作。

    另一个选项是比较document.location.pathname,它将在服务器名称之后包含所有内容。如果要进行不区分大小写的比较,可以使用document.location.pathname.toLowerCase()

    【讨论】:

    • 谢谢,不过这似乎不是问题所在。如果 URL 指定错误,则面板将隐藏在所有页面上,而事实并非如此。它仍然显示。
    • @TW_ Grant Clement 的回答似乎是正确的......您可以通过输入 alert(1); 之类的内容来确保您的代码完全运行——如果您没有得到这个,您的代码就不是运行。
    • 使用警报测试已被证明非常有用!
    猜你喜欢
    • 1970-01-01
    • 2023-01-31
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2018-08-14
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多