diff --git a/plugin/notes/notes.html b/plugin/notes/notes.html
index 2a3b2ba..9e9dfb5 100644
--- a/plugin/notes/notes.html
+++ b/plugin/notes/notes.html
@@ -244,6 +244,9 @@
}
+ // Limit to max one state update per X ms
+ handleStateMessage = debounce( handleStateMessage, 200 );
+
/**
* Creates the preview iframes.
*/
@@ -340,6 +343,37 @@
}
+ /**
+ * Limits the frequency at which a function can be called.
+ */
+ function debounce( fn, ms ) {
+
+ var lastTime = 0,
+ timeout;
+
+ return function() {
+
+ var args = arguments;
+ var context = this;
+
+ clearTimeout( timeout );
+
+ var timeSinceLastCall = Date.now() - lastTime;
+ if( timeSinceLastCall > ms ) {
+ fn.apply( context, args );
+ lastTime = Date.now();
+ }
+ else {
+ timeout = setTimeout( function() {
+ fn.apply( context, args );
+ lastTime = Date.now();
+ }, ms - timeSinceLastCall );
+ }
+
+ }
+
+ }
+
})();