Last active
November 9, 2018 12:38
-
-
Save Rhincodon/72fb1b9d3a212706fcb0417cc409cb5f to your computer and use it in GitHub Desktop.
KV Cobra
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// content window html | |
<script> | |
window.kv = { | |
storage: {}, | |
isReady: false, | |
ready: function(callback) { | |
var _flagCheck = setInterval(function() { | |
if (window.kv.isReady) { | |
clearInterval(_flagCheck); | |
callback(); | |
} | |
}, 100); | |
}, | |
setItem: function(key, value) { | |
window.parentIFrame.sendMessage({ | |
kv: true, | |
key: key, | |
value: value | |
}); | |
this.storage[key] = value; | |
}, | |
getItem: function(key) { | |
return this.storage[key]; // undefined or value; | |
} | |
}; | |
window.iFrameResizer = { | |
readyCallback: function() { | |
window.parentIFrame.sendMessage({ready: true}); // window.parentIFrame is exists now | |
}, | |
messageCallback: function(data) { | |
window.kv.storage = data; | |
window.kv.isReady = true; | |
} | |
} | |
</script> | |
<script src="iframeResizer.contentWindow.min.js"></script> | |
// сохранение/создание новых KV | |
<script> | |
window.kv.ready(function() { | |
kv.getItem('test'); | |
kv.setItem('test', 'test'); | |
}); | |
</script> | |
// на стороне кобры есть псевдо debounce, все посылаемые KV сначала добавляются в очередь, перезаписывая себя если они там уже есть. Очередь обрабатывается раз в 1500 мс. | |
// т.е если если человек ввел за эти 1500 мс n-ное кол-во символов с клавиатуры например, и у инпута нет debounce, то будет на сервер отправлятся последнее значение на момент тика обработки очереди. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment