2012-04-19 11 views
8

ı bu işlevi var diyelim:Tarayıcının dev araçları içinde bir ifadede duraklatıldığında, bu ifadeden hemen sonra nasıl yürütme sonlandırılır?

function test() { 

    // statements 1 

    statement_X; 

    // statements 2 

} 

ben çekiliyorum tarayıcının dev araçlarıyla ifadeleri yalak. Şimdi, "statement_X" de duraklatıldığında, "statement_X" ifadesinin hemen ardından tarafından izlendiği gibi, işlev yürütmesini sonlandırmak istiyorum ("ifadeler 2" yürütme işlevinin bir kısmını istemiyorum). return; bildirimi.

Chrome'un satır içi komut dosyası düzenlemesi olduğunu biliyorum, bu nedenle duraklatılmış deyimden sonra return deyimini el ile ekleyebilir ve ardından CTRL + S'yi tümüyle yeniden yürütmek için kullanabilirdim, ancak bu özelliği IE için de gerekiyor. genel bir çözüm umuyordum.

Yürütmeyi erken bitirmek, yapılması kolay bir şey gibi görünüyor (tarayıcı için), bu nedenle dev araçlardan böyle bir işlev bekliyorum.

enter image description here

+0

Bu özel işlevin veya hata ayıklamanın yürütülmesini durdurmaya mı çalışıyorsunuz? – rcdmk

+0

@rcdmk "Ya da hata ayıklama"? Ne demek istiyorsun? Ya da debugger? Hayır, hata ayıklayıcı bundan etkilenmemelidir. (Bu işlevin icrasını durdurmak istiyorum.) –

+0

Daha çok, bence bu konuda hiç şansınız yok, örneğin, Manishearth'ın işaret ettiği gibi. – rcdmk

cevap

2

Bunu IE 9'da başarıyla test ettim, bu yüzden burada bir yanıt olarak gönderiyorum: komut hata ayıklayıcısında statement_X duraklatılırken, statement_X hala F10'a basılır, sonra da kaplamanın son satırına sağ tıklatılır. işlevi (işlev gövdesini sonlandıran } sağ kıvrımlı ayracı olan satır) ve açılır menüden "Sonraki deyimi ayarla" yı seçin. Bu, işlevin sonuna kadar yürütmeyi, statement_X'dan hemen sonra geçersiz bir iade beyanı varmış gibi atlar. Aşağıdaki kodda gösterildiği gibi bir fonksiyonun son satırında başka ifadeler varsa bu teknik çalışması için

, sadece kıvırcık dirsek üzerinde sağ tıklayıp dikkatli olun.

function test() { alert("statement 1"); 
    alert("statement 2"); } function test2() { alert("statement 3"); } 

Bu

satır içi fonksiyonlarının durumunda bazen gerekli olabilir ya da hata ayıklama için tasarlanmamıştır minified komut verebilir.

+0

Bir sonraki ifade ayarla? Cool ':)' Son paragraftan ne demek istiyorsun? –

+0

@ ŠimeVidas: Whoops! Bu gerçekten hızlı ve kirliydi. Biraz daha fazla açıklama ekledim, şimdi net olmalı. –

+0

@ft Kodunuzu denedim ve kargabayı * daha önce kaşlı ayraç yerleştirmek zorunda kaldım. * Sonra * tıklatıldığında, "Bu konum için bir sonraki bildirimde bulunamıyor" ifadesini içeren bir hata açılır. Bu, anlamlıdır çünkü kaşlı ayraçtan sonraki alan, geçerli işlev yürütmesinin bir parçası değildir, bunun yerine, yürütülmesi olmayan dış kapsamın bir parçasıdır. Yani, kaşlı ayraçtan önce alanı tıklatırsan, iyi olmalısın. –

0

Eğer doğru anlamak, bunu yapamaz.

Hata ayıklayıcılar (Chrome'un hata ayıklayıcısında) her zaman javascript tabanlı.

Bu adamlar, enjekte edilen Kodu çalıştırmak için eval() (nihayetinde) kullanır. Krom denetçisi trol, (Bence) bir şey değerlendirmek çalıştığınızda ayıklayıcı kod sonunda bu çağrıları görünüyor:

function (evalFunction, object, expression, isEvalOnCallFrame, injectCommandLineAPI) 
{ 
    // Only install command line api object for the time of evaluation. 
    // Surround the expression in with statements to inject our command line API so that 
    // the window object properties still take more precedent than our API functions. 

    try { 
     if (injectCommandLineAPI && inspectedWindow.console) { 
      inspectedWindow.console._commandLineAPI = new CommandLineAPI(this._commandLineAPIImpl, isEvalOnCallFrame ? object : null); 
      expression = "with ((window && window.console && window.console._commandLineAPI) || {}) {\n" + expression + "\n}"; 
     } 
     return evalFunction.call(object, expression); 
    } finally { 
     if (injectCommandLineAPI && inspectedWindow.console) 
      delete inspectedWindow.console._commandLineAPI; 
    } 
} 

evalFunctioneval() için sadece bir takma addır.

Sorun, sabit kodlarda bile, return ifadelerini değerlendirmede kullanamıyoruz. Her zaman size SyntaxError: Illegal return statement verecektir.

Yani hayır, voodoo dönüş bildirimi yok.

+0

Öncelikle, duraklatılmış ifadeden hemen sonra bir return ifadesi enjekte etmek ve sonra kodu (CTRL + S tuşlarına basarak) yeniden çalıştırmak mümkündür (Chrome'da). Bu soruda bahsettim ve bu aradığım şey. (İdeal olarak, hata ayıklayıcısında uygun bir "Sonlandır" düğmesine sahip olmak isterim, böylece geri dönüş ifadelerini manuel olarak eklemek zorunda kalmaz ve CTRL + S'yi her zaman yaparım.) Sorun şu ki, IE'de bu işlevi istiyorum hot swap (satır içi kod düzenleme) olmayan ... –

+0

@ Šime, yerel bir işlevle görünüyor. Chrome'un hata ayıklayıcısı HTML olduğundan, bir düğme ekleyen Chrome için bir kullanıcı yazımı yazabilirim. Yine de emin değilim. Ve IE'de yok. – Manishearth

İlgili konular