检测何时在javascript(事件)中运行方法

时间:2012-06-29 05:12:45

标签: javascript variables inject

我希望在运行方法之前将变量注入页面。情况如下

CUSTOM JS CAN GO HERE

my.var = 'cake';
my.function();

我没有权限可以直接修改页面,但是页面顶部有一个内容区域,如果需要,我可以添加一些JS。基本上我需要在my.function()运行之前用其他东西覆盖my.var变量。有没有办法做到这一点? (该网站正在运行jQuery 1.4.2。

由于 丹

1 个答案:

答案 0 :(得分:3)

  

基本上我需要在my.function()运行之前用其他东西覆盖my.var变量。有没有办法做到这一点?

var oldfunction = my.function;
my.function = function () {
    my.var = "whatever you want";
    oldfunction.apply(this, arguments);
}

当然,如果mymy.function未被代码覆盖,则无法在调用my.function之前直接修改(my.var是)。

例如,在以下场景中:

///your code goes here

///code you cannot modify below
var my = {};
my.function = something;
my.var = 'cake';
my.function();

你想要的是不可能的(除非你能够以相同的方式重新定义something或其中的某些东西)。

基本上,在这种情况下,你唯一能做的就是写(让我们假设somethingfunction () { alert(my.var) }

var oldalert = window.alert;
window.alert = function (message) {
    oldalert(message === 'cake' ? 'whatever you want' : message);
}

嗯,你有个主意。

my.var = 'cake';my.function();之间注入部分代码,从另一方面来说,不可能。粗略地说,您可以选择两个选项,无论您的代码是在my.var = 'cake';之前还是在my.function();之后执行。在my.var = 'cake';之前执行你的代码是不可能的my.function();之前是不可能的(如果我们说的是生产环境;当然你可以使用调试器手动做任何事情,如果你需要修改{{1}用于调试目的)。