【问题标题】:Firefox: run functions from Javascript through an extensionFirefox:通过扩展从 Javascript 运行函数
【发布时间】:2020-04-04 21:44:51
【问题描述】:

目前我正在将 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)或任何其他扩展程序中一一调用函数?

提前致谢!

【问题讨论】:

    标签: firefox scripting greasemonkey tampermonkey


    【解决方案1】:

    这是因为 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 分配给 window,因为它可能会与某些内容发生冲突,但这取决于您。

    2。特殊特权

    如果您使用 GM 的某些功能,则需要添加 @grant unsafeWindow,然后分配给 unsafeWindow 变量。 小心你这样暴露的内容,你不想让网站访问任何GM_function 功能,因为它们可能会访问你在其他网站和计算机上的私人数据!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      相关资源
      最近更新 更多