Browse Source

Implement popup autoresizing for Safari

By default, Safari doesn't resize the popup to its content, but it's
possible to set the size pragmatically.
The popup will be resized every time when a change happens in the DOM tree.
pull/2/head
Deathamns 10 years ago
committed by gorhill
parent
commit
2216b7f32e
  1. 33
      src/js/vapi-common.js

33
src/js/vapi-common.js

@ -49,12 +49,35 @@ if (window.chrome) {
// update popover size to its content
if (safari.self.identifier === 'popover' && safari.self) {
vAPI.updatePopoverSize = function() {
safari.self.width = document.body.clientWidth;
safari.self.height = document.body.clientHeight;
};
(function() {
var upadteTimer = null;
var resizePopover = function() {
if (upadteTimer) {
return;
}
setTimeout(vAPI.updatePopoverSize, 200);
upadteTimer = setTimeout(function() {
safari.self.width = document.body.clientWidth;
safari.self.height = document.body.clientHeight;
upadteTimer = null;
}, 50);
};
var mutObs = window.MutationObserver || window.WebkitMutationObserver;
if (mutObs) {
(new mutObs(resizePopover)).observe(document, {
childList: true,
attributes: true,
characterData: true,
subtree: true
});
}
else {
// Safari doesn't support DOMAttrModified
document.addEventListener('DOMSubtreeModified', resizePopover);
}
})();
}
}
Loading…
Cancel
Save