亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在JavaScript中觸發窗口調整大小事件?

如何在JavaScript中觸發窗口調整大小事件?

慕森卡 2019-08-24 16:53:34
如何在JavaScript中觸發窗口調整大小事件?我在窗口調整大小時注冊了一個觸發器。我想知道如何觸發要調用的事件。例如,當隱藏div時,我希望調用我的觸發器函數。我發現window.resizeTo()可以觸發該功能,但還有其他解決方案嗎?
查看完整描述

3 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

在可能的情況下,我更喜歡調用函數而不是調度事件。如果您可以控制要運行的代碼,則此方法很有效,但請參閱下面有關您不擁有代碼的情況。

window.onresize = doALoadOfStuff;function doALoadOfStuff() {
    //do a load of stuff}

在此示例中,您可以在doALoadOfStuff不調度事件的情況下調用該函數。

在現代瀏覽器中,您可以使用以下命令觸發事件

window.dispatchEvent(new Event('resize'));

這在Internet Explorer中不起作用,您必須在其中進行縮寫:

var resizeEvent = window.document.createEvent('UIEvents'); resizeEvent.initUIEvent('resize', true, false, window, 0); window.dispatchEvent(resizeEvent);

jQuery有這個trigger方法,它的工作方式如下:

$(window).trigger('resize');

并有警告:

雖然.trigger()模擬事件激活,但是使用合成的事件對象,它并不能完美地復制自然發生的事件。

您還可以模擬特定元素上的事件......

function simulateClick(id) {
  var event = new MouseEvent('click', {
    'view': window,
    'bubbles': true,
    'cancelable': true
  });

  var elem = document.getElementById(id); 

  return elem.dispatchEvent(event);}


查看完整回答
反對 回復 2019-08-24
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

我相信這適用于所有瀏覽器:

var event;if (typeof (Event) === 'function') {
    event = new Event('resize');} else { /*IE*/
    event = document.createEvent('Event');
    event.initEvent('resize', true, true);}window.dispatchEvent(event);


查看完整回答
反對 回復 2019-08-24
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

對RxJS的回應

說像Angular中的東西

size$: Observable<number> = fromEvent(window, 'resize').pipe(
            debounceTime(250),
            throttleTime(300),
            mergeMap(() => of(document.body.clientHeight)),
            distinctUntilChanged(),
            startWith(document.body.clientHeight),
          );

如果需要手動訂閱(或非角度)

this.size$.subscribe((g) => {
      console.log('clientHeight', g);
    })

由于我的初始startWith值可能不正確(發送更正)

window.dispatchEvent(new Event('resize'));

在說Angular(我可以..)

<div class="iframe-container"  [style.height.px]="size$ | async" >..


查看完整回答
反對 回復 2019-08-24
  • 3 回答
  • 0 關注
  • 1150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號