Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理右键单击;“在新选项卡中打开”;在行动中?_Javascript_Ember.js_Action_Ember Cli - Fatal编程技术网

Javascript 如何处理右键单击;“在新选项卡中打开”;在行动中?

Javascript 如何处理右键单击;“在新选项卡中打开”;在行动中?,javascript,ember.js,action,ember-cli,Javascript,Ember.js,Action,Ember Cli,我有一个链接,在点击时调用一个操作,如下所示。我没有填充href,因为我希望在操作中处理它,并且我不希望触发页面重新加载 哈佛商学院 如果用户右键单击并选择“在新选项卡中打开”,是否有方法将用户引导到正确的页面?进一步研究后,我认为这不可能在操作中实现,但如果有人感兴趣,我有一个解决方法 我不想href干扰我的操作,所以在需要之前我不想填充它。因此,我修改了下面的模板,您将看到我添加了另一个运行oncontextmenu的操作。对于那些不知道右键单击菜单弹出时会发生此事件的人 哈佛商学院 您应该

我有一个链接,在点击时调用一个操作,如下所示。我没有填充href,因为我希望在操作中处理它,并且我不希望触发页面重新加载

哈佛商学院


如果用户右键单击并选择“在新选项卡中打开”,是否有方法将用户引导到正确的页面?

进一步研究后,我认为这不可能在操作中实现,但如果有人感兴趣,我有一个解决方法

我不想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>