2015-07-01 51 views
0

當我在Gmail中打開一封電子郵件時,我試圖以編程方式單擊「顯示原始」下拉菜單項。所有元素的ID隨着每封電子郵件而動態變化,所以這不是一種可靠的方式來查找我嘗試點擊的菜單項。首先,我只是想製作一段JavaScript,在Chrome的控制檯中點擊它。加載的jQuery後,我已經試過這樣:使用小書籤單擊Gmail的「顯示原始」按鈕

jQuery('div[role=menuitem]:contains(Show original)').click(); 

雖然現在看來,選擇適當的股利和點擊它,它不是預期的行爲,點擊並沒有真正做任何事情。這裏是一塊包含菜單項滿載郵件的菜單我想點擊的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> 

Show original menu item

我的目的是使用書籤,但我無法加載的jQuery在小書籤中,因爲有安全警告,但這是另一個問題/問題。另外,我是否應該在點擊「顯示原始」按鈕之前嘗試打開下拉菜單,或者是否可以在不打開菜單的情況下單擊此按鈕?

回答

1

您必須至少打開一次菜單,以便Gmail加載所需的菜單元素。

要點擊的元素使用dispatchEvent()直上DOM元素(不是jQuery的集合)

基本例子可能是這樣的:

// 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才能正常工作。