繁体   English   中英

单击JavaScript链接时如何调用Greasemonkey函数

[英]How to call a Greasemonkey function when a JavaScript link is clicked

因此,我最近开始从事Greasemonkey脚本的工作,而没有太多的JavaScript经验。 直到我遇到这个路障之前一切都很好。

我正在为具有少量信息表的页面编写脚本。 如果单击底部的链接,该表将在页面中完全展开以显示所有信息。 发生这种情况时,我需要在Greasemonkey中调用一个函数,但是,该链接似乎没有ID或我可以实际引用以观看的任何内容。 就是这样:

<a href="javascript: expandFullTable(false);"></a>

单击后,表格将展开,然后显示为true。 最初,我在加载页面时使用以下内容来扩展表,但这打破了几件事:

window.location.href = ('javascript: expandFullTable(false)');

我尝试使用“点击”,“ onclick”甚至“鼠标悬停”让Greasemonkey检测何时按下,但似乎无济于事。 据我所知,它只是一个调用函数的链接,但是经过一些重要的搜索后,我无法找到有关如何在脚本中引用它的任何信息。 我敢肯定这非常简单,但这让我无休止。

您可以像这样劫持函数:

var oldExpandFullTable = unsafeWindow.expandFullTable;
unsafeWindow.expandFullTable = function() {
    // Do something
    alert("You clicked on that thing!");

    // Call the original function
    oldExpandFullTable.apply(this, arguments);
};

但是,由于您标记了此因此应该可以检索链接:

var link = $("a[href^=\"javascript: expandFullTable\"]);

如果使用@require将jQuery注入到脚本中,它应该可以工作。 如果它已经在页面中,则可以在访问它之前添加它: var $ = unsafeWindow.jQuery;

顺便说一句,也许您应该了解有关unsafeWindow更多信息,以避免出现安全漏洞。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM