以下是一个简单的测试用例来演示我正在尝试做的事情:
<html>
<head>
<title>Test</title>
</head>
<body>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(":target").css('color', 'red');
});
</script>
<ul>
<li id="one">One</li>
<li id="two">Two</li>
<li id="three">Three</li>
</ul>
</body>
</html>
这个想法是通过 jQuery/Javascript 对目标项目做一些事情,当某些东西是目标时(例如,test.html#two)。
这正如我在 Firefox 和 IE 10 中所期望的那样工作,但在 Chrome、Opera 或 Safari 中却没有,这让我想知道这是否是某些浏览器中的错误,如果我正在尝试做的事情是错误的,或者如果我已经与某些规范或其他规范中不够精确的部分发生冲突。
如果我将 jQuery 代码更改为
alert($(":target").length);
很明显,Chrome、Opera 和 Safari 在 document.ready() 期间找不到 :target 元素,但稍后调用相同的代码(通过控制台或附加到单击事件的函数)确实找到了这些元素。
:target 什么时候可以被 JS 访问?