如果用户使用带有锚/哈希的链接访问网站,我如何将样式应用于元素
How can I apply a style to element if the user came to website using a link with an anchor/hash
假设我在互联网的某个地方放了一个到我网站的链接。具体来说,它是一个带有锚/哈希链接到文章一部分的URL,例如:http://example.com/article/#subsection
。
现在,如果有人通过这个链接来到我的网站,我如何触发CSS/JS做一些动作?
在我的特殊情况下,当有人使用包含#subsection
的链接时,我想为<div>
添加id
为subsection
的样式。
任何想法?
对于IE9和更高版本,这完全可以通过:target
伪类实现:
#subsection:target {
…
}
如果你想做的是突出显示页面上与当前URL中的哈希值匹配的部分(从你的问题中的措辞来看并不完全清楚),并且你想支持广泛的旧浏览器,那么你可以这样做:
哈希值没有发送到服务器,因此您必须在客户端javascript中应用更改。您可以通过在页面加载时向对象添加与哈希名称匹配的类来实现:
<script>
var id = window.location.hash.slice(1);
if (id) {
var obj = document.getElementById(id);
if (obj) {
obj.className += " specialStyle";
}
}
</script>
或者,使用jQuery:
<script>
if (window.location.hash.length > 1) {
$(window.location.hash).addClass("specialStyle");
}
</script>
这些脚本必须位于您希望添加类的元素之后的任何位置,或者在使用$(document).ready()
之类的东西加载DOM之前防止执行,尽管脚本可以运行得越快,新样式就会显示得越快。
我不清楚评论中提到的XSS漏洞现在在jQuery中是否仍然存在问题,但您可以使用纯javascript版本(不包含此漏洞)或在jQuery版本中进一步保护,如以下所示:
<script>
if (window.location.hash.length > 1) {
$(window.location.hash.replace(/[<>]/g, "")).addClass("specialStyle");
}
</script>
相关文章:
- 为什么在这个网站上不能通过JS访问元素
- 在元素悬停上显示带有javascript的弹出式网站
- 如何将第二个元素id注入到网站元素中
- 如何在山露网站上完成元素动画
- jQuery网站的键盘快捷键,焦点使用左键和右键转到上一个或下一个元素
- 创建一个本地脚本来操作网站中的DOM元素
- 我如何让我的网站检测鼠标是否被使用,然后在元素中添加一个类
- 我将如何能够使元素为我的网站建设者生成代码
- 带有HTML5元素的JavaScript网站欢迎加载器
- 如何更改网站正文元素的背景以与幻灯片放映相对应
- 恒星.js - 为垂直滚动网站配置偏移/对齐元素
- 如何让这个可拖动的框覆盖所有其他网站元素
- 单页网站粘性导航:更改内容元素的活动状态
- 如何在 SVG 上的鼠标光标旁边显示工具提示,尽管网站上有非 SVG 元素
- 如何更改转换:当滚动浏览网站时元素的translate()位置
- 如何在 PDF 中转换我的网站上的 DOM 元素
- Magento网站被扭曲,页面元素经常分散
- 在Joomla网站上隐藏一个html元素
- 在调整大小期间维护网站布局(使用javascript?同时调整所有元素的大小)
- 使用PHP保存PHP生成的网站元素为HTML