Javascript 如何处理右键单击;“在新选项卡中打开”;在行动中?
我有一个链接,在点击时调用一个操作,如下所示。我没有填充href,因为我希望在操作中处理它,并且我不希望触发页面重新加载 哈佛商学院Javascript 如何处理右键单击;“在新选项卡中打开”;在行动中?,javascript,ember.js,action,ember-cli,Javascript,Ember.js,Action,Ember Cli,我有一个链接,在点击时调用一个操作,如下所示。我没有填充href,因为我希望在操作中处理它,并且我不希望触发页面重新加载 哈佛商学院 如果用户右键单击并选择“在新选项卡中打开”,是否有方法将用户引导到正确的页面?进一步研究后,我认为这不可能在操作中实现,但如果有人感兴趣,我有一个解决方法 我不想href干扰我的操作,所以在需要之前我不想填充它。因此,我修改了下面的模板,您将看到我添加了另一个运行oncontextmenu的操作。对于那些不知道右键单击菜单弹出时会发生此事件的人 哈佛商学院 您应该
如果用户右键单击并选择“在新选项卡中打开”,是否有方法将用户引导到正确的页面?进一步研究后,我认为这不可能在操作中实现,但如果有人感兴趣,我有一个解决方法 我不想href干扰我的操作,所以在需要之前我不想填充它。因此,我修改了下面的模板,您将看到我添加了另一个运行
oncontextmenu
的操作。对于那些不知道右键单击菜单弹出时会发生此事件的人
哈佛商学院
您应该做的是设置
href
:
<a href={{this.nextPageNumber}} {{on "click" (fn this.goToPage this.nextPageNumber)}}>Next</a>
这也是更好的可访问性 为什么不直接填充
href
?它会触发一个页面转换,我不想这样做。如果我没有遗漏某些内容,您可以通过在事件处理程序中调用event.preventDefault()
,来防止这种情况发生。
@action
goToPage(pageName) {
this.args.pageUpdated('page', pageName.toString());
// scroll to top of search results
document.querySelector('.search-summary-title').scrollIntoView();
}
<a href="#/" {{on "contextmenu" (fn this.setHref this.nextPageNumber)}}
{{on "click" (fn this.goToPage this.nextPageNumber)}}>Next</a>
@action
setHref(pageName, event) {
event.target.setAttribute('href', `${window.location.pathname}?page=${pageName}`);
}
<a href={{this.nextPageNumber}} {{on "click" (fn this.goToPage this.nextPageNumber)}}>Next</a>