Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中运行方法时检测(事件)_Javascript_Variables_Inject - Fatal编程技术网

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

在javascript中运行方法时检测(事件),javascript,variables,inject,Javascript,Variables,Inject,我希望在运行方法之前将变量注入页面。情况如下 CUSTOM JS CAN GO HERE my.var = 'cake'; my.function(); 我没有权限直接修改页面,但是页面顶部有一个内容区域,如果需要,我可以添加一些JS。基本上,在运行.function()之前,我需要用其他内容覆盖my.var变量。有办法做到这一点吗?(该站点正在运行jQuery 1.4.2 谢谢 丹 基本上,在运行.function()之前,我需要用其他内容覆盖my.var变量。有什么方法可以做到这一点吗

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

CUSTOM JS CAN GO HERE

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

谢谢 丹

基本上,在运行.function()之前,我需要用其他内容覆盖my.var变量。有什么方法可以做到这一点吗

当然,如果调用
my
my.function
之前不能直接修改的代码未覆盖
my.function
(如
my.var
所示),则会出现这种情况

例如,在以下场景中:

///your code goes here

///code you cannot modify below
var my = {};
my.function = something;
my.var = 'cake';
my.function();
你想要的是不可能的(除非你能够重新定义
某物
或其中的某物)

基本上,在这种情况下,您唯一能做的就是编写(让我们假设
某物
函数(){alert(my.var)}

嗯,你有个主意

注入介于
my.var='cake';
my.function();
之间的一些代码从另一个角度看是不可能的。大致来说,您可以在两个选项中选择,您的代码是在
my.var='cake';
之前还是在
my.function()之后执行
。在
my.var='cake';
之后但在
my.function();
之前执行代码是不可能的(如果我们说的是生产环境;当然,如果出于调试目的需要修改
my.var
,您可以手动使用调试器执行任何操作)

基本上,在运行.function()之前,我需要用其他内容覆盖my.var变量。有什么方法可以做到这一点吗

当然,如果调用
my
my.function
之前不能直接修改的代码未覆盖
my.function
(如
my.var
所示),则会出现这种情况

例如,在以下场景中:

///your code goes here

///code you cannot modify below
var my = {};
my.function = something;
my.var = 'cake';
my.function();
你想要的是不可能的(除非你能够重新定义
某物
或其中的某物)

基本上,在这种情况下,您唯一能做的就是编写(让我们假设
某物
函数(){alert(my.var)}

嗯,你有个主意


注入介于
my.var='cake';
my.function();
之间的一些代码从另一个角度看是不可能的。大致来说,您可以在两个选项中选择,您的代码是在
my.var='cake';
之前还是在
my.function()之后执行
。在
my.var='cake';
之后但在
my.function();
之前执行代码是不可能的(如果我们说的是生产环境;当然,如果您需要修改
my.var
以进行调试,您可以手动使用调试器执行任何操作)。

我希望能够检测到我的.function()的时间即将运行,并运行一个匿名函数,在变量运行之前将其设置为我喜欢的值。此外,我没有权限将任何文件推送到站点。我所拥有的只是站点CMS中的一个窗口,允许我在上面的区域弹出一些自定义JS。如果这些设置在
自定义
注入点上方,则只需重新声明它们。Un幸运的是,我想更改的是
自定义
区域下方的一个。我希望我可以检测到我的.function()即将运行,并运行一个匿名函数,在变量运行之前将其设置为我喜欢的值。此外,我没有权限将任何文件推送到站点。我所拥有的只是站点CMS中的一个窗口,允许我在上面的区域弹出一些自定义JS。如果这些设置在
自定义
注入点上方,则只需重新声明它们。Un幸运的是,我想更改的是
自定义
区域下方。这是我的想法,但我不确定该函数是在自定义脚本区域上方还是下方声明的。我相应地修改了我的答案。基本上,您唯一的选择是重新定义某些内容。不可能打破执行顺序。在JS中,o我们可以完全确定,在
my.var='cake';
my.function();
之间不会发生任何事情。但这不是。似乎有点错误。是的,您的解决方案看起来非常好。但是,我刚刚发现,
自定义
区域实际上位于my.function()的下方调用,所以看起来像是我被塞住了…不过感谢您的帮助。如果场景与上面一样,那很可能是最好的解决方案。不幸的是,JS是同步运行的(不是在加载文档时)作为well@JaredFarrish我不明白你的例子应该演示什么。OP说页面上有一个
a;b;
块,他们对这个块的内容没有控制权。因此,不可能在
a;
调用之后而在
b;
调用之前注入代码来运行(不考虑更改
a
b
和调试器的可能性)。这就是我的想法,但我不确定该函数是在自定义脚本区域的上方还是下方声明的。我相应地修改了我的答案。基本上,您唯一的选择是重新定义某些内容。不可能打破执行序列。在JS中,可以完全确定在
my.var='1'之间不会发生任何事情蛋糕“;
my.function();
。这不是。但似乎有点错。是的,你的解决方案看起来非常好。但是我刚刚发现
自定义
区域实际上位于my.function()的下方被调用,所以看起来好像我被填满了…不过谢谢你的帮助。如果场景是如上所述的,那很可能就是bes
var oldalert = window.alert;
window.alert = function (message) {
    oldalert(message === 'cake' ? 'whatever you want' : message);
}