我有一個chrome應(yīng)用程序,我想在分辨率更改時正確調(diào)整大?。ㄅc屏幕寬度成比例的尺寸)。我編寫了一個函數(shù),可以使用正確的尺寸重新繪制應(yīng)用程序,現(xiàn)在我只想在需要時執(zhí)行它。分辨率的更改會導(dǎo)致screen.width發(fā)生更改,但是(由于它們與不同的事物有關(guān),所以可能就不足為奇了),不會觸發(fā)“調(diào)整大小”事件,據(jù)我所知,沒有觸發(fā)任何事件。我知道Proxy物件(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy),因此我編寫了一些代碼來檢測何時設(shè)置了變量并執(zhí)行了回調(diào),這似乎可行,但在分辨率更改的情況下不起作用。因此,我在線搜索并嘗試使用此方法https://gist.github.com/eligrey/384583(本質(zhì)上,這是在類似主題的幾個stackoverflow問題中提供的答案,實際上是我最初產(chǎn)生的結(jié)果,盡管缺乏抽象的含義代理對象提供)。這似乎也可行(從某種意義上來說,如果我說在完成screen.watch(“ width”,()=> console.log(“ hello”))之后手動設(shè)置screen.width);然后再執(zhí)行screen.width = 100 ;我的回調(diào)已執(zhí)行)。但不是在分辨率更改的情況下(實際上,也許最重要的是,分配此觀察者似乎阻止了screen.width的分配)。我有三個問題1)當(dāng)我分配一個混亂的觀察者/代理時發(fā)生了什么。2)我如何才能知道瀏覽器在此詳細(xì)級別上的工作(是什么發(fā)送觸發(fā)來更改screen.width?我猜是操作系統(tǒng),這是什么樣的)3)有沒有更好的方法來實現(xiàn)我最初想要的功能(調(diào)整chrome應(yīng)用程序的大小)。通常,我對問題1)感興趣,并且不再關(guān)心3)。要復(fù)制我的問題,在Firefox或Chrome中打開新標(biāo)簽頁轉(zhuǎn)到開發(fā)者控制臺。檢查screen.width,更改分辨率,觀察screen.width變化從https://gist.github.com/eligrey/384583復(fù)制并粘貼代碼做screen.watch(“ width”,(id,oldval,newval)=> {console.log(“ hello”); return newval;});做screen.width = 100; 并觀察到您好已記錄并且screen.width設(shè)置為100更改分辨率,觀察未設(shè)置screen.width。編輯-正如Bertrand回答后所揭示的那樣,調(diào)整大小事件實際上可能會在分辨率更改時觸發(fā),但這似乎是對分辨率更改的響應(yīng),如果窗口較小,則強制窗口邊界變小,然后screen.width可以更改而無需觸發(fā)調(diào)整大小事件。
檢測變量何時在javascript中發(fā)生更改
慕斯709654
2021-04-23 17:15:21