[Javascript] هل من الممكن تغيير قيم متغير جافا سكريبت أثناء تصحيح الأخطاء في Google Chrome؟


Answers

هذا ممكن الآن في chrome 35 (اليوم اعتبارًا من 11 يوليو 2014). أنا لا أعرف أي إصدار سمح لها أولا رغم ذلك.

فقط اختبار مثال gilly3 @ على الجهاز الخاص بي ويعمل.

  • افتح وحدة التحكم ، في " Sources و "علامات التبويب" ، وأضف مقتطفًا جديدًا ، ثم الصق الشفرة التالية:

    var g_n = 0; function go() { var n = 0; var o = { n: 0 }; return g_n + n + on; // breakpoint here }

  • انقر بزر الماوس الأيمن على اسم المقتطف ، وانقر فوق "تشغيل" (لا يؤدي ذلك إلى تنشيط الوظيفة)

  • إضافة نقطة الإيقاف في بيان الإرجاع.
  • في وحدة التحكم أدناه ، اكتب go()
  • وتغيير قيم المتغير كما هو موضح أدناه

وكانت النتيجة التي تم إرجاعها g_n + n + on 30.

Question

أنا أقوم بتصحيح تطبيق javascript (باستخدام أدوات Chrome dev) ، وأود تغيير بعض قيم المتغيرات أثناء التنقل خلال الشفرة.

هل هذا ممكن على الإطلاق؟

لقد حاولت وحصلت على شيء من هذا القبيل:

> modeline
1
> modeline=0
0             <<< seems to work but... 
> modeline
1             <<< ups!!

لكنني غير قادر على العثور على أي وثائق تنص على ما يمكن أو لا يمكن القيام به ...




لا أعرف سبب عدم سماح فريق chrome لهذه الميزة السخيفة ... ولكن الطريقة الوحيدة التي يمكنني بها تغيير قيم المتغير مع النجاح هي تعديل البرنامج النصي مباشرةً في محرر Chrome ضمن علامة التبويب "المصادر" (وهذا يغير من سلوك البرنامج النصي الخاص بك حتى تقوم بتحديث الصفحة) ، ولكن هذه التغييرات سوف تفقد عند التحديث ، حتى تكون متأن.




في الواقع هناك حل. قم بنسخ الطريقة بالكامل ، قم بتعديل اسمها ، على سبيل المثال originalName () إلى originalName2 () ولكن قم بتعديل المتغير بالداخل لتتخذ أي قيمة تريدها ، أو قم بتمريرها كمعلمة.

ثم إذا قمت باستدعاء هذه الطريقة مباشرة من وحدة التحكم ، فسوف يكون لها نفس الوظيفة ولكنك ستتمكن من تعديل قيم المتغير.

إذا تم استدعاء الطريقة تلقائيًا ، فقم بدلاً من ذلك بالكتابة في وحدة التحكم

originalName = null;
function originalName(original params..)
{
    alert("modified internals");
    add whatever original code you want
}



يبدو أن Firebug يسمح لك بفعل ذلك.