Angular6默认上下文菜单

Posted

技术标签:

【中文标题】Angular6默认上下文菜单【英文标题】:Angular6 Default ContextMenu 【发布时间】:2019-11-21 08:12:35 【问题描述】:

我正在使用 Angular 6 开发一个项目,我使用 (click)="actionNavigateAway()" 将页面定向到新的 Url。这在 左键单击 上效果很好。但是在 右键单击 时,它会显示一个上下文菜单,其中包含BackReload 等选项(如第一张照片所示)。

相反,我想展示的是我们通常在右键单击链接时找到的默认上下文菜单(图 2)。我在网上搜索并找到了制作自定义上下文菜单的方法,但默认情况下没有。你能帮我吗?谢谢。

【问题讨论】:

你能在 stackblitz 中分享你的代码吗? 人们发布评论只是为了 50 个代表的答案,代表竞赛永远不会在这里结束:D @javan.rajpopat 这些是不同的上下文菜单,因为上下文菜单的来源是不同的元素,在第二张图片中它说在新选项卡中打开 链接,因为它是链接,您不能将 div 打开到新标签中吗?以及自定义默认上下文菜单,出于某些安全原因,浏览器不允许您这样做。 【参考方案1】:

如果您需要使用 JS 来路由链接,但需要 href 上下文菜单 - 您可以同时使用。您可以添加空白 href 或任何 href,然后传递事件以防止函数出现默认值。像这样

<a href="/somepath" onclick="function(event)event.preventDefault()">This link has both</a>

现在,当您单击该 href 链接时,该页面不会尝试将您路由到“/somepath”。您可以向函数添加更多代码,或者使用 JS SPA 路由器来处理路由。您现在有 javascript 处理您的链接,和一个正常的上下文菜单。由于上下文菜单具有实际路径 - 当且仅当您选择在新选项卡中打开时,它才会实际打开。不是实际的点击

【讨论】:

【参考方案2】:

看看this

如果a元素有href属性,那么它代表一个超链接 (超文本锚点)由其内容标记。

如果a元素没有href属性,则该元素代表a 可能放置链接的位置的占位符,如果它 是相关的,只包含元素的内容。

所以它不被视为超链接。 只需添加一个空的 href 属性。像这样,

  <a (click)="actionNavigateAway()">Not Working</a>
 <br/>
 <a href="" (click)="actionNavigateAway()">Working</a>

【讨论】:

【参考方案3】:

右键单击具有href 属性的链接时,上下文菜单应该可以工作。

<a>This is a A tag without attributes</a><br>
<a href="#">This A tag has a href attribute</a><br>
<a onclick="hi()">This A tag has a onclick attribute</a><br>

这意味着您应该使用href 属性而不是点击处理程序。

尝试运行 sn-p 并右键单击不同的“链接”以了解我的意思。

【讨论】:

【参考方案4】:

默认上下文菜单在链接上正常工作,没有人试图重现它是正常的^^

就您而言,唯一可能的问题是您没有正确瞄准链接

但您也可以像这样创建自定义上下文菜单:Angular 2: Implement a custom context menu

【讨论】:

以上是关于Angular6默认上下文菜单的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭material UI上下文菜单,而不显示默认的上下文菜单?

防止在 kineticJS 阶段右键单击默认上下文菜单?

如何自定义 PDFView 的上下文菜单?

如何以编程方式关闭 UIWebView 的上下文菜单?

javascript事件相关4

上下文菜单条带宽度