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