私は同じ問題に陥り、この投稿と関連する他の投稿を見ましたが、「onclick」ソリューションに満足していませんでした:
- キーボードナビゲーションでは(私にとっては)機能しませんでした
- 目立たないJavaScriptに期待するものではない宣言ゾーンに追加スクリプト要素(onclick = ...)を課します
最後に、dojo をさらに掘り下げて、ハンドラーの最初のサブノードの href 属性を直接使用することにしました。私のスクリプトセクション( dijit menus tutorialから派生)は次のとおりです。
<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'」を忘れないでください....