将触发设置焦点设置为" DIV"使用Angular指令单击元素
<a href="#" class="skipToContent" ng-click="showContent()" title="skip-to-main-content">Skip To Main Content</a>
<div class="getFocus" role="button" tabindex="0">
<span>Am Focused</span>
</div>
当我点击此链接时,它应该将焦点转移到div
为了达到这个目的,我写了这段代码PSB。
我尝试使用scrollIntoView();但也不确定它是否适用于所有浏览器,它也适合我。
$scope.showContent = function() {
var x = document.querySelector('.skipToContent');
var y = document.querySelector('.getFocus');
y.focus();
console.log(document.activeElement);
});
};
注意:我们无法添加ID或向DOM添加类。
答案 0 :(得分:1)
scrollIntoView
函数适用于所有主流浏览器(包括chrome / firefox / ie&gt; = 8),但是如果要将click
事件附加到元素,则应使用{{1功能:
addEventListener
检查此代码段:
var x = document.querySelector('.skipToContent');
var y = document.querySelector('.getFocus');
x.addEventListener('click', function(e) {
y.scrollIntoView()
});
&#13;
var x = document.querySelector('.skipToContent');
var y = document.querySelector('.getFocus');
x.addEventListener('click', function(e) {
e.preventDefault()
y.scrollIntoView()
});
&#13;
注意 -
<a href="#" class="skipToContent" title="skip-to-main-content">Skip To Main Content</a> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <div class="getFocus" role="button" tabindex="0"> <span>Am Focused</span> </div>
用于确保浏览器忽略e.preventDefault()
标记上click
事件的默认行为。
答案 1 :(得分:1)
设置焦点就像调用目标DOM元素上的focus()
function一样简单:
document.querySelector('.skipToContent').onclick = function() {
document.querySelector('.getFocus').focus()
}
&#13;
<a href="#" class="skipToContent" title="skip-to-main-content">Skip To Main Content</a>
<div class="getFocus" role="button" tabindex="0">
<span>Am Focused</span>
</div>
&#13;
答案 2 :(得分:0)
在没有任何JavaScript的情况下处理跳转到主要内容的更好方法是:
如果页面太短,当然不会发生实际滚动。更多内容,更多滚动的机会。
<p><a href="#mainContent">Skip to main content</a></p>
<nav>
<ul>
<li><a href="#">nav item one</a></li>
<li><a href="#">nav item two</a></li>
<li><a href="#">nav item three</a></li>
</ul>
</nav>
<div id="mainContent" tabindex="-1">
<h1>Welcome</h1>
<p>Here is some content</p>
</div>
我保留了本机div:聚焦样式,以便你可以看到它正常工作,但你想要去掉那个样式(仅限于这个div。保留可操作元素的焦点轮廓)