2016-03-28 32 views
0

Üçüncü parti Javascript kitaplıklarını kullanan çok sınırlı bir web platformuyla çalışıyorum. Nasıl ve neden böyle işlediğini yabancı ayrıntılarını listelemeden, belirli bir console.log girdisi göründükten sonra bir şey/şey (örneğin, Javascript işlevi çalıştır) mümkün olup olmadığını merak ediyorum. Sistem çok kilitlendi ancak uygulamanın genel kullanıcı deneyimini geliştirmeye çalışıyorum. Bu JavaScript kütüphanesindenBelirli bir console.log() girdisinden sonra bir Javascript işlevi yürütmek mümkün mü?

Tipik konsol günlüğü girişi genellikle şuna benzer:

data access_token=XXXXXXXXXXXXXXXX&type_name=user&attributes=["uuid","displayName","email"] 

Googling ilgisiz sonuçlar büyük miktarda verir. Bunu konsol.log yönteminin üzerine yazmayı içeren buldum, ancak bu benim istenen yaklaşımı değil: How to get the console.log content as string in JavaScript

Herhangi bir fikir var mı? Mevcut içeriği bir diziye veya dizeye dönüştürdüğünüzü ve sonuçlara göre ayrıştırdığınızı varsayıyorum.

+1

neden geçersiz kılma değil console.log: Yalnızca "access_token=" içeren satırları yakalamak istiyorsa


, o zaman böyle Yukarıdaki kodu değiştirebilir? –

+0

Tek seçenek bu gibi görünüyor. Bu sistemdeki diğer geliştiriciler için console.log girişlerini yerinde bırakmayı umuyordum. Ben konsol.log() girişleri ayarlayamadan giriş yapmadan bunu yapabileceğime inanıyorum. – sparecycle

cevap

1

console.log()'u geçersiz kılabilir ve yine de konsolda oturum açmaya devam edebilirsiniz, böylece hem çıkışı yakalayabilir hem de günlüğe kaydetme işlemini yerinde tutabilirsiniz.

var logEntries = []; 

(function(oldLog) { 

    console.log = function(arg) { 
     // captures only first argument to console.log() 
     // could be expanded to concatenate all entries 
     logEntries.push(arg.toString()); 

     // now call original console.log() with original arguments 
     return oldLog.apply(console, arguments); 
    }; 
})(console.log); 

Yani, şimdi herhangi bir zamanda, logEntries değişken console.log() gönderilen her şeyin bir birikmiş dizi olacak:

İşte bunu yapmak için bir yoldur. Bu, nesneleri genişletmeyen veya dizileri sıralayan basit bir sürümdür. Bu alandaki diğer özellikler eklenebilir, ancak sadece belirli bir dizeyi aradığınız anlaşılıyor.

Örneğin, yalnızca "access_token" içeren nesneleri yakalamak istiyorsanız, logEntries dizisine eklemeden önce filtreleme ekleyebilirsiniz.

var logEntries = []; 

(function(oldLog) { 

    console.log = function(arg) { 
     if (typeof arg === "string" && arg.indexOf("access_token=") !== -1) { 
      logEntries.push(arg); 
     } 

     // now call original console.log() with original arguments 
     return oldLog.apply(console, arguments); 
    }; 
})(console.log); 
+0

@sparecycle - Sorununuza bir çözüm buldunuz mu? Eğer öyleyse, lütfen cevabınızın solundaki yeşil onay işaretini işaretleyerek bunu (veya başka bir cevabı) seçtiğiniz cevabınız olarak işaretleyiniz ve bu, sorunuzun yanıtlandığını ve size kazanabileceğiniz bazı itibar puanları kazanacağını topluma gösterecektir. Burada zamanla daha fazla ayrıcalıklar. – jfriend00