用于打开具有焦点和活动特定元素的不同网页的超链接

时间:2011-06-01 07:16:24

标签: html focus

此问题涉及THIS PAGE上的主(标题)导航菜单。

单击“服务”下拉子菜单中的任何项目时,我希望打开“服务”页面(在现有浏览器窗口中),并在“服务”页面上打开特定锚标签元素成为焦点。我已经做到了这一点。但是,当目标锚标签处于焦点时,我希望它的行为就像在其父div上执行的手动鼠标悬停一样,即应该对应于焦点元素的文本向下滑动。 对于手动演示,请转到HERE并将鼠标悬停在其中一个垂直列表项上 - 文本将向下滑动到列表右侧。

“服务”子菜单链接的HTML:

<li> <a href="services.html#collabSol" class="pagefade" onclick="var w=window.open(this.href, '_self'); w.focus();">collaborative law</a></li>

目标“a”标记及其父div的HTML(即应该关注“服务”页面的“a”标记):

<div id="mylist1"><h3><a href="" id="myTag1" name="collabSol">Collaborative Solutions</a></h3></div>

用于驱动焦点“a”标记及其父div的悬停行为的脚本:

//fades in desired text after fading out whatever text is already displayed:
$(document).ready(function() {
    $('#mylist1').mouseover(function() { //note first list item must be called mylist1 to avoid conflict with other code
  if ( !$('#text1').is(":visible") ) { //prevents re-display if desired text already displayed
$(".shownText").slideUp(100).removeClass('.shownText');
$('#text1').slideDown(300, 'linear'); 
  }
    });
//capture click events as well:
/* $('#mylist1').click(function() {  
  if ( !$('#text1').is(":visible") ) { //prevents re-display if desired text already displayed 
$(".shownText").slideUp(100).removeClass('.shownText');
$('#text1').slideDown(300, 'linear');
} 
   });*/
//capture focus events on <a> as well:
 $('#myTag1').focus(function() {  
  if ( !$('#text1').is(":visible") ) { //prevents re-display if desired text already displayed 
$(".shownText").slideUp(100).removeClass('.shownText');
$('#text1').slideDown(300, 'linear');
} 
});
});

请注意,主导航菜单是使用jquery通过Dreamweaver扩展创建的。

到目前为止我所拥有的:

当“服务”页面打开时,正确的目标处于焦点(如浏览器地址栏所示)。但是,此焦点不会触发预期的文本滑动事件。当我点击标签时,下一个列表div成为焦点(正如预期的那样)&amp;发生适当的文本下滑。

我希望过多吗?我是否误解了“关注焦点”的局限性?“霍瑟姆山今年是否会有一个杀手级的雪季? 您的圣人建议非常受欢迎! 柯克

1 个答案:

答案 0 :(得分:0)

我不确定你对“聚焦”的使用是我所期望的......在网址中有一个片段并不一定会关注该元素,它只是将显示向下移动到它。我认为它适用于tabbing的原因是tabbing确实关注元素,我假设它从已滚动到的元素开始。

我建议将显示脚本分解为命名函数(因此可以在其他地方使用),然后在页面加载时,您可以从URL中提取片段(例如#famLaw)。使用该片段,您应该能够在页面上找到正确的元素并将其聚焦。

还应该注意的是,将显示文本拉入单独的功能具有整合代码的优势 - 您基本上复制了onfocus和onready事件中的代码,因此将其分解可以更容易地进行维护和重用。 :)

P.S。我想对Mt Hotham来说是的。我以前从未听说过,但我会乐观。