Firefox:通过扩展程序从Javascript运行功能

时间:2019-12-11 15:05:46

标签: firefox scripting greasemonkey tampermonkey

目前,我将Javascript粘贴到FF的控制台中,并从控制台中调用函数:

function fill (i){
    if(i==1){
        SINGLE_START();
    }
    else if(i==2){
        DUAL_START();
    }
    else if(i==3){
        INTEGRATED_START();
    }
    else{
        alert("=======================\n               Tool Filler\n=======================\n\n1 or 2");
    }
}

它用于抓取网站内容,例如从网站的某些部分创建文件或生成电子邮件,例如:

function SINGLE_START(){

    //Focus:
    let d = $(document).activeElement.contentDocument.activeElement.contentDocument.activeElement.contentDocument;

我想,有一种方法可以通过扩展使用它,因此我安装了Tampermonkey并将脚本保存为扩展中的用户脚本。但是比我有一个问题,就是我无法根据需要从脚本中调用所需的功能,而不仅仅是在网站加载时启动脚本。

有人知道如何在Tampermonkey(或Greasemonkey)或任何其他扩展程序中一个接一个地调用函数吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为Tampermonkey脚本在隔离的上下文中运行。有两种:

1。没有特殊特权

如果您没有使用@grant GM_doThisAndThat解锁的任何特殊GM功能,而是使用@grant none,那么内部发生的事情是这样的:

function TheScript() {
     // Here is your script that you added to tampermonkey
}
TheScript();

如果那里有函数,则仅在脚本中可用。您需要将其显式公开给窗口上下文:

function fill (i){
    ... code here ...
}
window.myFill = fill;

然后在控制台中编写myFill(42),它将执行。

我建议您避免将fill分配给窗口,因为它的名称可能与某些内容冲突,但这取决于您。

2。特殊特权

如果您正在使用某些GM功能,则需要添加@grant unsafeWindow,然后分配给unsafeWindow变量。 请注意您所公开的内容,您不希望该网站访问任何GM_function功能,因为它们可以访问您在其他网站和计算机上的私人数据! < / p>