Skip to content

Instantly share code, notes, and snippets.

@Rhincodon
Last active November 9, 2018 12:38
Show Gist options
  • Save Rhincodon/72fb1b9d3a212706fcb0417cc409cb5f to your computer and use it in GitHub Desktop.
Save Rhincodon/72fb1b9d3a212706fcb0417cc409cb5f to your computer and use it in GitHub Desktop.
KV Cobra
// 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