ChatGPT解决这个技术问题 Extra ChatGPT

在 Chrome 调试器中编辑

如何在 Chrome 调试器中“动态”编辑 JavaScript 代码?它不适合我,所以我无权访问源文件。我想编辑代码并查看它们在页面上的效果,在这种情况下阻止动画排队很多次。

你可以使用 Opera。 Opera 允许编辑 JS 文件。软重新加载页面后,您的更改将被应用。右键单击 > 源 > 进行更改 > 应用更改。
This 是一个很棒的 Chrome 调试器教程。它显示了在调试器中对脚本进行更改的非常简单的步骤。
您还可以通过 conditional breakpoint“注入”代码。在给定的示例中,使用 num = 5, console.log(arguments[0], num), false 更新和记录 foo 函数内的值。

J
Jossef Harush Kadouri

我今天在玩别人的网站时遇到了这个问题。

我意识到我可以在调试器中将断点附加到我想要动态编辑的代码行之前。而且由于即使在重新加载页面后断点仍然存在,所以我能够在断点处暂停时编辑我想要的更改,然后继续让页面加载。

因此,作为一种快速解决方法,如果它适用于您的情况:

在脚本重新加载页面的较早位置添加断点 将更改编辑到代码中 CTRL + s(保存更改) 取消暂停调试器


谢谢!当需要在页面加载附近调用的自动执行匿名函数中进行更改时,我发现这很有效。
啊,因为我早些时候尝试过这个但它没有用,虽然哦,伙计,我怎么会错过它。但是,是的,对我不起作用。
对我来说至关重要的是知道应该保存更改(第 4 步)。谢谢!
对我来说不适用于 html 文件中的 javascript。此外,如果您已将文件夹添加到工作区,请选择本地 js 文件,右键单击并将该文件映射到网络 dito。
那么有没有办法修改html文件中的脚本呢?
A
Adam

您可以在“脚本”选项卡下的 Chrome 开发人员工具中使用内置的 JavaScript 调试器(在以后的版本中,它是“源”选项卡),但您应用于代码的更改仅在执行通过它们时才会表达。这意味着对页面加载后未运行的代码的更改将不会产生影响。与例如更改驻留在鼠标悬停处理程序中的代码不同,您可以即时测试。

There is a video from Google I/O 2010 event 介绍 Chrome 开发者工具的其他功能。


在更高版本的 Chrome 中,选项卡图标已消失,“脚本”选项卡已重命名为“源”-因此可能不明显找到 javascript 调试器。更多信息在这里stackoverflow.com/questions/12113769/…
没有这样的方法。我也无法在 Sources 选项卡下修改代码。
Chrome 调试器不允许本地修改 javascript。错误的。
@oMiKeY 什么是假的? Chrome 确实允许在调试器中修改脚本。
@oMiKeY 如果脚本没有美化,您可以修改
M
Mark Foreman

您可以在 Chrome 中使用“覆盖”来在页面加载之间保留 javascript 更改,即使您没有托管原始源。

在 Developer Tools > Sources > Overrides 下创建一个文件夹 Chrome 会询问该文件夹的权限,单击 Allow 在 Sources>Page 中编辑文件,然后保存 (ctrl-s)。紫点表示文件保存在本地。

https://i.stack.imgur.com/BS7Fu.png


天哪,这是唯一对我有用的。我尝试过直接自行编辑,将文件夹添加到文件系统、片段,而我的更改从未得到反映。将文件夹添加到覆盖后,它会重新加载并反映更改!谢谢谢谢
这看起来很有希望,但对我不起作用。我想知道这是否仅适用于最简单的 JS,而不适用于 Vue 或任何使用 Webpack 编译的东西。
这确实适用于 Webpack。使其工作的最简单方法是进入 HTML 检查器,找到 <script src="js file" >右键> “在源面板中显示”。然后从那里右键单击JS文件中的任意位置> “保存覆盖”。
重申 Ryan 的评论,这不适用于 Vuetify / Webpack。 chrome 工具表明本地覆盖已到位(源映射的 .js 文件上显示左下角的蓝色/紫色点),但不尊重更新的代码,即使在各种类型的软/硬/缓存刷新之后也是如此。
非常感谢,这就是我一直在寻找并完成工作!
a
artemisian

这就是您要查找的内容:

1.- 导航到 Source 选项卡并打开 javascript 文件

2.- 编辑文件,右键单击它,将出现一个菜单:单击保存并保存在本地。

为了查看差异或恢复您的更改,请右键单击并从菜单中选择选项本地修改...。如果您展开显示的时间戳,您将看到与原始文件的更改差异。

此处提供更多详细信息:http://www.sitepoint.com/edit-source-files-in-chrome/


g
gnur

很简单,转到“脚本”选项卡。并选择所需的源文件并双击任意行进行编辑。


如果您可以在 file:// URL 的情况下将更改保存到磁盘,那就太棒了
这正是我所做的,但正如人们所期望的那样,这些变化并没有反映在页面上。我需要将 $(selector).fadeIn() ... 更改为 $(selector).stop(true,true).fadeIn() ... 你知道吗?我希望能够在页面上看到这种情况。
哦,该死的,你是对的。现在我想知道为什么 Chrome 允许我们在没有任何效果的情况下编辑任何内容..
“另存为...”仅将文件保存到您的计算机。重新加载页面后,它不会应用更改。如果你想将更改应用到 JS 文件进行调试,你可以使用 Opera。
C
Chris Hayes

Chrome 覆盖

在源面板中打开 JS 文件。

右键单击 script src URL > 在 Sources 面板中显示

https://i.stack.imgur.com/iUsz5.png

确保选中“启用本地覆盖”。

https://i.stack.imgur.com/JrHsm.png

右键单击 JS 文件中的任意位置 > 保存以覆盖

https://i.stack.imgur.com/NB1Yb.png

可以了,好了!

只需编辑文件,然后使用 CMD/CTRL + S 保存。现在,无论何时刷新页面,它都会使用修改后的文件。 (只要文件名保持不变)

如果您在文件图标中看到一个紫点,您就会知道它正在工作。

https://i.stack.imgur.com/wkkYd.png


这改变了吗?我看不到“启用本地更改”或“保存以覆盖”选项
我明白了,您首先需要选择一个用于覆盖的文件夹,最好提一下
@raquelhortab 有机会我会看看,因为您最近必须这样做,如果您建议对包含该步骤的答案进行编辑,这可能对用户最有帮助。
L
Lukáš Novák

放置断点 右键单击断点并选择“编辑断点”插入代码。使用 SHIFT+ENTER 创建新行。

https://i.stack.imgur.com/k8Jrf.png

https://i.stack.imgur.com/32sny.png


d
developer747

如果它的 javascript 在单击按钮时运行,那么在 Sources>Sources 下进行更改(在 chrome 的开发人员工具中)并按 Ctrl +S 保存就足够了。我一直这样做。

如果您刷新页面,您的 javascript 更改将消失,但 chrome 仍会记住您的断点。


d
dominik

由于这是处理 JS 实时编辑的非常流行的问题,我想指出另一个有用的选项。正如 svjacob 在他的回答中所描述的:

我意识到我可以在调试器中将断点附加到我想要动态编辑的代码行之前。而且由于即使在重新加载页面后断点仍然存在,所以我能够在断点处暂停时编辑我想要的更改,然后继续让页面加载。

上述解决方案对我来说不适用于相当大的 JS(webpack 包 - 3.21MB 缩小版,130k 行代码在美化版) - chrome 崩溃并要求重新加载页面,这会恢复任何已保存的更改。在这种情况下要走的路是 Fiddler,您可以在其中设置 AutoRespond 选项以使用计算机中的任何本地文件替换任何远程资源 - see this SO question for details

就我而言,我还必须将 CORS 标头添加到提琴手以成功模拟响应。


s
stackinfostack

现在谷歌浏览器已经引入了新功能。通过使用此功能,您可以在 chrome 浏览器中编辑您的代码。 (代码位置永久更改)

为此,请按 F12 --> 源选项卡 --(右侧) --> 文件系统 - 请选择您的代码位置。然后 chrome 浏览器会询问你的权限,之后代码会变成绿色。并且您可以修改您的代码,它也会反映您的代码位置(这意味着它将永久更改)

谢谢


P
Prashant Pimpale

就像@mark 的回答一样,我们可以在 Chrome DevTools 中创建一个片段,以override默认 JavaScript。最后,我们可以看到它们对页面有什么影响。

https://i.stack.imgur.com/LhliU.png


m
meeech

这是我写的chrome中的js调试器的一个温和的介绍。也许它会帮助其他人寻找这方面的信息:http://meeech.amihod.com/getting-started-with-javascript-debugging-in-chrome/


这是一篇好文。不幸的是,它没有说明在调试器中编辑 JS 是有问题的任务。
不同意。您会在最后看到我具体举例说明如何在 Chrome 调试器中“动态”编辑 JavaScript 代码,这是问题的一部分。
meeech,除非我误解了您的帖子,否则您将演示如何在控制台上评估 JS。这与编辑函数不同,以便将来调用该函数时,它的行为会有所不同。
很公平。我将编辑理解为更改实时页面的值,并认为编写会有所帮助,因为一旦您在控制台中拥有它,您就可以在执行上下文中使用这些值以及任何其他 js。
是的,meeech,我做了很多年你描述的事情。我终于对无法为更改事件处理程序实现良好的反馈循环感到沮丧。尤其是那些在页面加载期间触发的。正如 AaronLS 和我在 gnur 回答的评论中所讨论的那样,有时在 DevTools > Sources > Sources 中进行编辑可以工作,而其他时候则不行。但是当它起作用时,它非常甜蜜!
S
Seif Tml

https://i.stack.imgur.com/wdAL1.jpg


您必须保持控制台打开,以便 chrome 将在断点处停止,否则 chrome 将忽略断点
不工作。我使用 F5 重新加载并停止,我更改了文件,然后我继续运行,我得到了我刚刚修复的相同错误。是主页面旁边的一个js文件,
1
100r

我正在寻找一种方法来更改脚本并调试该新脚本。我设法做到这一点的方法是:

在要更改和调试的脚本的第一行设置断点。重新加载页面,以便命中断点粘贴新脚本并在其中设置所需的断点 Ctrl+s,页面将刷新,导致第一行中的断点被命中。 F8 继续,现在只要不进行重定向和重新加载,您新粘贴的脚本就会替换原始脚本。


m
mark

Chrome DevTools 有一个 Snippets 面板,您可以在其中创建和编辑 JavaScript 代码,就像在编辑器中一样,然后执行它。打开 DevTools,然后选择 Sources 面板,然后选择 Snippets 选项卡。

https://developers.google.com/web/tools/chrome-devtools/snippets

https://i.stack.imgur.com/BYzBR.jpg