Userscript App Core For Userscript Web Apps
安装此脚本后,网页js可以通过脚本提供的window.UAC.grant
获取GM_*函数,从而获得相当于用户脚本的权限,典型的用法就是可以用来开发一些需要跨域api的网页应用。
示例:去除了单次翻译5000字限制的百度翻译(源码)
Usage:
安全考虑,调用时需要提供调用密码。用户可以在Tampermonkey的菜单中设置密码(如图1),然后网页可以如下方法调用:
// Wait for userscript ready
window.UAC ? work() : window.addEventListener('uac-ready', work);
function work() {
// Ask user for password
// window.UAC.check checks whether password is correct, returns true or false
// When using UAC, provide null as password if user didn't set any password
var password=null;
while (!window.UAC.check(password)) {
password = prompt('Enter password to use Userscript App Core:');
}
// Get GM_* functions using window.UAC.grant(functionName, password)
const GM_log = window.UAC.grant('GM_log', password);
const GM_info = window.UAC.grant('GM_info', password);
GM_log(GM_info);
}
效果如图2。
网站也可以一次性询问密码后储存在localstorage,然后以后直接从localstorage读取密码,除非用户更改密码,否则就可以一直使用。