2013-01-04 76 views
1
<a class="js-open-panel action-button" target="video-download" href="#"> 
     <em><span class="icon-16x16 icon-download"></span> Download</em></a> 

的xpath使用螢火 /HTML /體/格[2]/DIV [2] /部分[3]/A [4]點擊按鈕的Greasemonkey

我想點擊此按鈕,但無事工作的所有「」「getElementBy‘’」

我通過搜索讀一本書大尺寸,但沒有奏效

/* 
function clickc(x) 
{ 
var el = document.getElementsByTagName('em')[7]; 
var evt = document.createEvent("MouseEvents"); 
evt.initEvent("click", true, true); 
el.dispatchEvent(evt); 
} 
setTimeout (clickc , 1); 
*/ 
/* 
document.getElementsByClassName("js-open-panel action-button").click(); 
*/ 

/* 
function clickc(x) 
{ 
var x = document.getElementsByTagName('em')[7].click(); 
click(x); 
} 
setTimeout (clickc , 1); 
*/ 

回答

1

只要按鈕不被AJAX加載,下面應該工作:

var dwnldBttn = document.querySelector (
    "a.js-open-panel.action-button[target='video-download']" 
); 
var clickEvent = document.createEvent ('MouseEvents'); 
clickEvent.initEvent ('click', true, true); 
dwnldBttn.dispatchEvent (clickEvent); 


注意querySelector()作品關閉CSS選擇器(這螢火蟲也將顯示)相對於的XPath。



從評論,這聽起來像AJAX沒有加載按鈕(但它可以被用來激活它)。

使用此完整腳本啓動。除了@include指令之外,沒有任何改變。

// ==UserScript== 
// @name  _YOUR_SCRIPT_NAME 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// @grant GM_addStyle 
// ==/UserScript== 
/*- The @grant directive is needed to work around a design change 
    introduced in GM 1.0. It restores the sandbox. 
*/ 

setTimeout (clickDownloadButton, 1111); 

function clickDownloadButton() { 
    var dwnldBttn = document.querySelector (
     "a.js-open-panel.action-button[target='video-download']" 
    ); 
    var clickEvent = document.createEvent ('MouseEvents'); 
    clickEvent.initEvent ('click', true, true); 
    dwnldBttn.dispatchEvent (clickEvent); 
} 
+0

沒有工作---爲它阿賈克斯與否我沒有背景,依靠它來回答這個問題---即非常新的,只知道我的Greasemonkey和使用至今這麼一點------ CSS路徑:: html.not-ie body#top.page-videos div.master-site-wrapper div#main section.video-action-bar a.js -open-panel –

+0

兩件事...第一:打開Firefox的控制檯(按* Control-Shift-K *)並粘貼我的答案中的代碼,然後按回車。它工作嗎? –

+0

第二:禁用javascript(菜單:*工具 - >選項 - >內容*,然後取消選中*啓用JavaScript *。然後重新加載頁面。按鈕是否仍然出現?如果沒有,則由AJAX加載。 –