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

时间:2014-10-12 20:57:08

标签: javascript jquery html greasemonkey

所以我最近开始研究Greasemonkey脚本而没有很多JavaScript的经验。直到我遇到这个道路暴露才行。

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

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

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

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

我尝试过使用“click”,“onclick”,甚至“mouseover”来让Greasemonkey检测到它被按下但似乎没有任何效果。从我可以告诉它只是一个调用函数的链接,但经过一些重要的搜索后,我无法找到有关如何在我的脚本中引用它的任何内容。我确信它非常简单,但是让我感到很沮丧。

1 个答案:

答案 0 :(得分:0)

你可以劫持这样的功能:

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以避免安全漏洞。