问题
I cannot really find any questions or information related to this elsewhere, so I thought I would post a question. Is there a way to make the BrowserWindow
responsive to the content of index.html
?
I know you can likely do this by manually changing the size of the BrowserWindow
either with resizeTo
or remote
, but you would need to know the explicit size to set it to.
Is there a way to simply make the window responsive to the content, so that as the document's body
grows, so too does the window?
回答1:
Maybe a simple approach to this could be: create a timer with setTimeout to check if document(document.body) size change; to this, use getComputedStyle method and a 'static function' variable storing the last size.
function getDocumentWidth(){//returns current document width
return window.getComputedStyle(document.querySelector('body'), null).getPropertyValue("width");
}
function checkDocumentWidthChanged(callback){//verify by document width change, execute a callback function argument if it happened and resume the verification call
let ns=getDocumentWidth()
if(this.lastSize!=ns){
this.lastSize=ns
callback()
}
setTimeout(function(){checkDocumentWidthChanged(callback);}, 500);
}
checkDocumentWidthChanged.lastSize=getDocumentWidth();//function static var to store the last document size
checkDocumentWidthChanged(function(){//stat the loop
console.log('New document size:'+checkDocumentWidthChanged.lastSize)
})
document.body.addEventListener('click',function(evt){//Set an event listener to test the proccess
this.style.width=300+Math.floor(Math.random() * 100)+'px'
console.log(this.style.width)
})
<body>
Click here to change the document body size or change the browser size.
</body>
来源:https://stackoverflow.com/questions/59691032/browser-window-responsive-to-content