好吧,我遇到了同样的问题,看到了这篇文章和相关的其他文章,但对“onclick”解决方案不满意:
- 它对键盘导航不起作用(对我来说)
- 它强加给声明区域中的添加脚本元素(onclick = ...),这不是我对不显眼的 JavaScript 所期望的
最后,我在 dojo 中进一步挖掘,并决定直接使用处理程序中第一个子节点的 href 属性。我的脚本部分(来自dijit 菜单教程)是:
<script>
require([
"dojo/dom",
"dojo/parser",
"dojo/dom-attr",
"dojo/query",
"dijit/registry",
"dijit/WidgetSet", // for registry.byClass
"dijit/Menu",
"dijit/MenuItem",
"dijit/MenuBar",
"dijit/MenuBarItem",
"dijit/PopupMenuBarItem",
"dojo/domReady!"
], function(dom, parser, domattr, query, registry){
// a menu item selection handler
var onItemSelect = function(event){
dom.byId("lastSelected").innerHTML = this.get("label");
var achild = query("a", this.domNode)[0];
if (achild != null) {
var href = domattr.get(achild, "href");
if ((href != null) && (href != '') && (href != '#')) {
window.location.href = href;
}
}
};
parser.parse();
var setClickHandler = function(item){
item.on("click", onItemSelect);
};
registry.byClass("dijit.MenuItem").forEach(setClickHandler);
registry.byClass("dijit.MenuBarItem").forEach(setClickHandler);
});
</script>
这样我就不必更改类型菜单中的任何内容
<ul><li><a href="...">...</a></li></ul>
在禁用 JavaScript 的情况下工作,并且在启用 JavaScript 时,链接可以在鼠标和键盘导航下正常工作。只是不要忘记body元素中的“class ='claro'”......