相关疑难解决方法(0)

网站可以知道我是否正在运行用户脚本?

例如,Facebook.com可以在我的浏览器上运行版本控制脚本,并查看我是否使用脚本运行更改的HTML代码?

是否可以使用一个脚本来完成,该脚本可以读取缓存中的HTML代码并生成某种散列标记,该标记被发送回服务器并与发送到客户端的代码进行比较?

javascript greasemonkey facebook userscripts tampermonkey

14
推荐指数
2
解决办法
9609
查看次数

编写用户脚本时是否真的需要立即调用函数表达式 (IIFE) 模式?

我的问题非常类似于javascript中自执行函数的目的是什么?,但是它涉及用户脚本(特别是针对 GreaseMonkey)。

我看到有些用户脚本是用这种模式分发的,有些则不是。

具有 IIFE 模式的脚本示例:(来源)

// ==UserScript==
// (...)
// ==/UserScript==

(function(){
    // if <condition>
        document.location.href += '?sk=h_chr';
    // ...
})();
Run Code Online (Sandbox Code Playgroud)

没有它的脚本示例:(来源)

// ==UserScript==
// (...)
// ==/UserScript==

window.location.href = "https://www.facebook.com/?sk=h_chr";
Run Code Online (Sandbox Code Playgroud)

此外,我还发现 TamperMonkey 的“新脚本”模板遵循它,而 GreaseMonkey 和 ViolentMonkey 的模板没有。

那么问题是,IIFE 模式在编写用户脚本时有用吗?

特别是,如果我的脚本处于strictmode,并且我使用let而不是var. 无论如何,据我所知,用户脚本中定义的函数和变量在全局页面范围内不可用。

谢谢。

javascript userscripts tampermonkey ecmascript-6 greasemonkey-4

6
推荐指数
1
解决办法
708
查看次数