2010-06-16 19 views
17

Geliştiricilerin, pencereler arasında postMessage ile gönderilen iletileri doğru şekilde ayıklamasına izin veren iyi bir araç var mı?HTML5 Javascript postMessage API için iyi bir hata ayıklayıcısı var mı?

Veya Firebug için bir eklenti olabilir mi?

+1

Hata ayıklama için ne var? Gönderme ve alma kodu doğru olduğu sürece çalışır. Değilse, o zaman –

+0

Indeed hata ayıklamak için gereken budur. Diyorum ki, sadece göndermekte olduğunuz değişkenlerin değerini kontrol et. Örneğin, bağlantılı örnekte, "myMessage.value" veya "evt.data" değerine bakın. –

+3

Şüphesiz, adil olmak gerekirse (ör.) Firebug, hangi işleyici kodunun var olduğuna bakılmaksızın, XMLHttpRequest ayrıntılarını nasıl gösterdiği gibi, belirli bir kareye gönderilen iletileri size gösterebilirse iyi olabilir. – Pointy

cevap

16

Firebug (as of 1.11 beta 1) bunu monitorEvents() ile desteklemektedir. Böyle bir şey yapabilirsiniz:

$("iframe").each(function(i, e) { 
    console.log("Monitoring messages sent to: iframe(" + i + ")#" + $(this).attr("id")); 
    monitorEvents(this.contentWindow, "message"); 

    // Send a test message to this iframe 
    this.contentWindow.postMessage("Hi iframe - " + i, "*"); 
}); 

console.log("Monitoring messages sent to window"); 
monitorEvents(window, "message"); 
// Send a test message to the window 
window.postMessage("Hi window", "*"); 

(@Pierre: söz için teşekkürler o feature request)

DÜZENLEME:Also works in Chrome, ben bir güvenlik hatası ile karşılaştı yukarıdaki kodu çalıştığımızda olsa o document.domain değerler aynı değildi, bu yüzden bu iki uygulamanın davranışları biraz farklı olabilir.

UPDATE: Chrome ekibine, postMessage olaylarının zaman çizelgesinde görünmesini isteyen submitted a feature request numaralı telefonum var. Ayrıca, yüklendiğinde bir sayfaya rasgele JavaScript kodunu enjekte edebilen bir extension called JScript Tricks buldum. Sayfa yüklendikten sonra olayları izlemek için aşağıdaki kodu ekleyebilirsiniz. Oldukça iyi çalışır, ancak hemen gerçekleşen olayları (örneğin, eğer mümkün ise, bu, yükten önce) özleyebilir.

(function($) { 
    var $window = $(window); 
    $window.add("iframe").on("message", function(e) { 
     console.log("Received messsage from " + e.originalEvent.origin + ", data = " + e.originalEvent.data); 
    }); 
})(jQuery); 
+1

2016'da herhangi bir güncelleme var mı? Firebug hala varolduğundan emin değilim –

+1

Firebug kesinlikle hala var (https://addons.mozilla.org/en-US/firefox/addon/firebug/) ama uzun bir süre sonra postMessage hata ayıklamak zorunda kaldım Bu yüzden bu cevabı yakın zamanda gözden geçirmedim. Eğer kırık bir şey bulursanız veya daha iyi bir çözüm bulursanız lütfen paylaşın. – iX3

0

Firebug feature-request yayımlandı.

+1

Teşekkürler @ iX3: Artık Firebug tarafından destekleniyor (1.11 beta 1 itibariyle). –

İlgili konular