Eup*_*phe 8 javascript tampermonkey
我创建了一个脚本,其中包含一个函数:
function updateGUI(){
document.getElementById("cursoft").value = getSoftware();
document.getElementById("curver").value = getCurrentVersion();
document.getElementById("rcycles").value = getResearchCycles();
document.getElementById("rcycle").value = getCurrentCycle();
document.getElementById("curproc").value = getCurrentProcess();
document.getElementById("curact").value = getCurrentAction();
}
Run Code Online (Sandbox Code Playgroud)
该脚本在页面加载时运行很好,但是当我尝试在脚本完成执行后运行此函数时,它是"未定义".
如何让它"保持"在当前范围内?
Nit*_*Nit 12
Tampermonkey脚本在单独的范围内运行.这意味着要使全局可用的功能,您需要执行以下操作:
window.updateGUI = function () {...}
Run Code Online (Sandbox Code Playgroud)
如果要向全局范围添加许多函数,最好将它们存储在单个对象下并通过那里解决您的函数.这有助于避免您可能遇到的任何可能的冲突.
var myFunctions = window.myFunctions = {};
myFunctions.updateGUI = function () {...};
Run Code Online (Sandbox Code Playgroud)
之后你可以简单地打电话myFunctions.updateGUI();.
更好的方法是授予unsafeWindow.
// @grant unsafeWindow
Run Code Online (Sandbox Code Playgroud)
然后像这样创建你的函数:
function test()
{
console.log("test");
}
Run Code Online (Sandbox Code Playgroud)
但也可以通过以下方式在控制台中使用它unsafeWindow:
if(!unsafeWindow.test)
{
unsafeWindow.test = test;
}
Run Code Online (Sandbox Code Playgroud)
然后就可以test在控制台访问了。