Как инициировать окно, изменяют размер события в JavaScript?

Строка, которую вы публикуете здесь, не является допустимой строкой json. Допустимая строка json начинается и заканчивается на { и }. Так что в вашем случае это должно быть так:

{
    "specification": [{
        "type": [{
            "type": "Smartphone , Phablet , Notch Phone , Camera Phone , Selfie Phone",
            "shape": "Bar"
        }],
        "basic": [{
            "os": "Smartphone , Phablet , Notch Phone , Camera Phone , Selfie Phone",
            "Sim": "Bar"
        }]
    }]
}
300
задан Costique 22 February 2012 в 18:36
поделиться

2 ответа

По возможности, я предпочитаю вызывать функцию, а не отправлять событие. Это хорошо работает, если у вас есть контроль над кодом, который вы хотите запустить, но см. Ниже случаи, когда вам не принадлежит код.

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 имеет триггер метод , который работает следующим образом:

$(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);
}
334
ответ дан 23 November 2019 в 01:27
поделиться

Ответ с 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" >..
0
ответ дан 23 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: