aboutsummaryrefslogtreecommitdiff
path: root/files/ru/tools/debugger/how_to/debug_eval_sources/index.html
blob: 714444fe1c59f0c8b4d28e4944a5cd06e4fc8143 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
---
title: Отладка кода внутри eval
slug: Tools/Debugger/How_to/Debug_eval_sources
tags:
  - Отладка
translation_of: Tools/Debugger/How_to/Debug_eval_sources
original_slug: Tools/Debugger/How_to/Отладка_кода_внутри_eval
---
<div>{{ToolsSidebar}}</div><div class="geckoVersionNote">
<p>Доступно, начиная с Firefox 36.</p>
</div>

<p><code><font face="Open Sans, Arial, sans-serif">В Firefox версии 36 или старше доступна отладка кода, выполняемого с помощью </font><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> или конструктора <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function"><code>Function</code></a>.</p>

<p>Чтобы воспользоваться этой возможностью, используйте директиву <code>//# sourceURL </code></p>

<pre class="brush: js">var button = document.getElementById("clickme");
button.addEventListener("click", evalFoo, false);

var script = "function foo() {" +
             "  console.log('called foo');" +
             "}" +
             "foo();//# sourceURL=my-foo.js";

function evalFoo() {
  eval(script);
}</pre>

<p>Такой код присвоит исполняемому скрипту имя "my-foo.js".</p>

<p>Как только скрипт из строки <code>script</code> будет выполнен, он станет доступен в дебаггере как отдельный источник, а также будет доступен к отладке, как код из любого другого источника. Кроме этого, появится возможность, <a href="/ru/docs/Tools/Debugger/How_to/Работа_с_минифицированным_кодом">представить код в удобочитаемом виде</a>:</p>

<p><img alt="" src="https://mdn.mozillademos.org/files/9781/debug-eval-source-url.png" style="display: block; margin-left: auto; margin-right: auto; width: 836px;"></p>

<p>Это имя также будет использоваться в стеке вызовов функций, доступном в <a href="/ru/docs/Tools/Web_Console#Error_messages">веб-консоли</a>.</p>

<p>Начиная с Firefox 40, оператор <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/debugger">debugger;</a></code> также останавливает дебаггер в безымянных источниках выполнения.</p>