有没有什么好的工具可以让开发人员正确调试在postMessage之间发送的消息?
或者也许是Firebug的插件?
解决方法:
Firebug (as of 1.11 beta 1)通过monitorEvents()支持此功能.你可以这样做:
$("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:谢谢你提到feature request)
编辑:Also works in Chrome,虽然当我尝试上面的代码我遇到一个安全错误,document.domain值不相同,所以这两个实现的行为可能会略有不同.
更新:我向Chrome团队提供了submitted a feature request,要求postMessage事件出现在时间轴中.此外,我发现extension called JScript Tricks可以在加载时将任意JavaScript代码注入页面.您可以向其添加以下代码,以便在页面加载后监视事件.虽然它可能会错过立即发生的事件(例如,在onload之前,如果可能的话),它的效果非常好.
(function($) {
var $window = $(window);
$window.add("iframe").on("message", function(e) {
console.log("Received messsage from " + e.originalEvent.origin + ", data = " + e.originalEvent.data);
});
})(jQuery);