首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用书签单击Gmail的“显示原始”按钮

使用书签单击Gmail的“显示原始”按钮
EN

Stack Overflow用户
提问于 2015-07-01 16:10:14
回答 1查看 366关注 0票数 1

当我在Gmail中打开一封电子邮件时,我尝试以编程的方式单击“显示原始”下拉菜单项。所有元素的ID都会随每封电子邮件而动态变化,所以这不是找到我要点击的菜单项的可靠方法。首先,我只是想在Chrome的控制台上做一个点击它的JavaScript。加载jQuery之后,我尝试了以下方法:

代码语言:javascript
运行
复制
jQuery('div[role=menuitem]:contains(Show original)').click();

虽然它似乎选择了适当的div并单击它,但这并不是预期的行为,而且单击并没有真正做任何事情。下面是一个已满载电子邮件菜单的部分,其中包含了我想用JavaScript单击的菜单项:

代码语言:javascript
运行
复制
<div class="J-N" role="menuitem" aria-hidden="false" id="so" style="-webkit-user-select: none;"><div class="J-N-Jz"><div><div id=":173" class="cj" act="32"><img class="dS J-N-JX" src="images/cleardot.gif" alt="">Show original</div></div></div></div>

我的意图是使用书签,但由于安全警告,我在书签中加载jQuery时遇到了困难,但这是另一个问题/问题。另外,在单击“显示原始”按钮之前,我应该尝试打开下拉列表吗?还是可以先单击此按钮而不打开菜单?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-31 19:38:32

您必须至少打开一次菜单,因此Gmail加载所需的菜单元素。

要单击元素,可以在DOM元素上直接使用dispatchEvent() (而不是jQuery集合)

基本示例可能如下所示:

代码语言:javascript
运行
复制
// Create events
var mouseDownEvent = new MouseEvent('mousedown', { 'bubbles': true });
var mouseUpEvent = new MouseEvent('mouseup', { 'bubbles': true });

// Get DOM elements
var menu = jQuery("div[role='button'][aria-label='More']").get(0);
var button = jQuery("div[role='menuitem']:contains('Show original')").get(0);

// Open and close menu, to ensure button existence
menu.dispatchEvent(mouseDownEvent);
menu.dispatchEvent(mouseDownEvent);

// Click menu item
button.dispatchEvent(mouseDownEvent);
button.dispatchEvent(mouseUpEvent);

这将只适用于Chrome,Firefox和Opera。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31166538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档