我注意到你没有给出一个真实的例子,我也不打算涵盖所有假设的可能性;有多种技术可用于各种现实世界的网站。
安全的跨浏览器几乎每次尝试都可以使用,方法是Script Injection:
function GM_main () {
var newVar = WEBSITE.uniqueObject.prototype.uniquePrototype;
/* Or, explicitely...
var newVar = window.WEBSITE.uniqueObject.prototype.uniquePrototype;
*/
// DO WHATEVER WITH newVar HERE.
}
addJS_Node (null, null, GM_main);
//-- This is a standard-ish utility function
function addJS_Node (text, s_URL, funcToRun, runOnLoad) {
var D = document;
var scriptNode = D.createElement ('script');
if (runOnLoad) {
scriptNode.addEventListener ("load", runOnLoad, false);
}
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (scriptNode);
}
这两个变体也与您之前的问题相关联。
然而,人们想要使用的最常见情况unsafeWindow
似乎是破坏广告显示计时器或触发通常由链接或按钮触发的 javascript。
在常见的按钮/链接场景中,不要使用unsafeWindow
. 只是以编程方式click
或mousedown
控制。
在欺骗网站计时器的情况下,因为它是一条线(不包括黑客攻击),这是一种unsafeWindow
可能很合适的情况。例如:
unsafeWindow.payTheBillsTimerCounter = 0;
谨防:
- 愤怒的站长理论上可以利用
unsafeWindow
.
- 请不要违反任何服务条款(TOS)。
- 请支持您使用(大量)资源的网站。
- 对于 Chrome 用户脚本和内容脚本,
unsafeWindow
黑客可能会在 Chrome 版本 28 左右被阻止。对于 Chrome 上的直接脚本,切换到Tampermonkey。Tampermonkey 很可能会继续支持unsafeWindow
,而无需任何黑客(就您而言)。
Tampermonkey 还提供了近乎完美的 Greasemonkey 兼容性和许多 Chrome 用户脚本不具备的功能。