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

xpath 使用 firebug /html/body/div[2]/div[2]/section[3]/a[4]

我想单击此按钮,但所有“”“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);
*/
4

1 回答 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 选择器(Firebug 也会显示)与 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);
}
于 2013-01-04T07:55:07.803 回答