是否存在用于动态更改浏览器中运行的javascript的工具?

是否存在用于动态更改浏览器中运行的javascript的工具?,javascript,dynamic-data,Javascript,Dynamic Data,是否存在用于动态更改浏览器中运行的javascript的工具?例如,要在运行时更改javascript变量的值。Firebug或Venkman javascript调试器。查看一下javascript有一个()函数,您可以构建字符串,然后运行它 <script type="text/javascript" language="javascript"> example = function() {alert('first');} example(); eval("example

是否存在用于动态更改浏览器中运行的javascript的工具?例如,要在运行时更改javascript变量的值。

Firebug或Venkman javascript调试器。

查看一下javascript有一个()函数,您可以构建字符串,然后运行它

<script type="text/javascript" language="javascript">
  example = function() {alert('first');}
  example();
  eval("example = function() {alert('second');}");
  example();
</script>

示例=函数(){alert('first');}
示例();
eval(“example=function(){alert('second');}”);
示例();
上面的代码是如何使用eval更改现有代码的示例


@这表明您可以更改现有代码。您对问题的编辑澄清了原始问题,但因此使我的答案看起来无效,但在最初发布时,这是一个有效点,原始海报应该使问题更清楚。

查看javascript外壳。 它就像浏览器中的调试器。 您可以在活动文档对象上运行/更改任何javascript函数

非常适合在您无法访问源/服务器的站点上调试/处理其他人的javascript


我提到过它有标签吗?这太棒了。

因此,Firebug确实是最好的选择之一——或者,如果您是拥有Visual Studio的开发人员,并且希望使用IE进行调试,那么您可以这样做。假设您将使用Firefox对Firebug执行此操作

首先,确定要修改代码的位置,并将以下行放在要开始处理的行之前:

debugger;
这将导致Firebug在该点停止脚本的执行,此时您可以单步执行代码并更改变量的值

您还可以使用Firebug在Firebug的脚本窗口中单击代码行左侧的位置来放置断点:


正如其他人所提到的,Firebug允许您在JavaScript中设置断点(尽管当我的JavaScript位于HTML文档中而不是外部文件中时,我没有成功地命中断点),这将在运行时中断函数的执行

它还允许您查看DOM对象和所有属性(包括JavaScript变量)


还有一个可以在非Firefox浏览器中使用的浏览器。

Opera9现在与FireBug捆绑在一起(相当于FireBug),我知道它也可以动态编辑JavaScript。不管怎么说,如果他们还没有时间把它包括进去的话,这至少是一个即将到来的特性。

Mozdev有一个名为。不仅可以动态修改和重新定义代码,还可以访问底层浏览器代码。真的很酷

它在您的计算机amnmd ALLWO上打开一个端口,您可以将telnet会话(仅从本地主机)连接到该端口,以开始执行代码。您还可以将该端口最多打开到非本地主机的连接。。。。(但要小心,这是相当不安全和危险的,等等)


它附带了一个emacs次要模式,允许您将不同区域的文本直接发送到mozdev,并提供了一个非常好的交互模式。我进一步扩展了它,从emacs设置Firebug断点,并启动selenium测试。基本上,我可以从编辑器中编写浏览器脚本。很酷。不久,我将发布源代码

反对票投给了什么?eval(“alter('dynamicrunjs');”),因此它是一个有效的答案。JS是动态的,它已经运行了!我投了反对票,因为您无法eval()来更改现有的正在运行的代码。使用eval()可以运行更多代码,但这不是问题所在-请参阅我的编辑,eval可用于更改现有代码!老实说,你的问题已经不正确了。eval只能修改全局代码,除了在最糟糕的情况下,它不会回答“alterrunningjavascript”。但是它可以,我已经证明了我的观点。我可以编写一些更复杂的代码,它显示了AJAX.NET如何动态加载JavaScript文件,并使用eval来确保代码的创建。这只在某些浏览器中起作用,不能提供Gary特别要求的功能,即改变正在运行的非全局变量。实现这一点的唯一方法是在代码中设置断点,而这个shell不提供断点。不过我同意这是一个很好的工具。不过,很显然,一位编辑已经在这个问题上添加了这个额外的问题。啊!无论如何,这个shell确实很好,但是再次强调,它不能在中途停止脚本来编辑变量值。这是一个很好的答案,谢谢。我用过这个,它真的不像Firebug那么容易使用,它需要付出太多的努力才能得到Firebug提供给你的一样东西…你当时可能没有使用它。如果您所做的只是运行一些快速测试,firebug控制台将工作得很好,但是如果您正在重新定义函数,那么MozREPL可能会更好。你看过MozREPL的视频吗?我以前没看过。我想它可能对一些事情有用,但对于大多数用途,我仍然看不出它比Firebug(它确实允许我重新定义函数)提供了更多。谢谢你!我想最适合我的是能够在我的编辑器中更改我函数的定义,并通过一次按键将该函数直接发送到MozREPL,而不是编辑定义、复制、粘贴到firebug中,测试…不应该关闭,因为关闭一个问题本质上是要求删除。你是不是在绕着我的问题说些愚蠢的话?