MUI DesktopDatePicker 导致滚动到 iFrame 中的顶部

问题描述 投票:0回答:1

我正在尝试在 iFrame 中使用 MUI 中的 DesktopDatePicker。 打开(单击按钮)时,页面父页面滚动到顶部。



  useEffect(() => {
    if (datePicker.current) {
      const blurPreventButton = datePicker.current.parentElement?.children[1].children[0];
      if (blurPreventButton) {
        blurPreventButton.id = 'openDatePickerButton';
        iframeBlurManipulation();
      }
    }
  }, []);


<DesktopDatePicker
  className="capitalize-text"
  value={selectedDate}
  autoFocus={false}
  slots={{
    day: ServerDay,
  }}
  inputRef={datePicker}
  onChange={handleDateChange}
  shouldDisableDate={shouldDisableDate}
  minDate={dayjs(firstValidDate)}
  slotProps={{
    popper: {
      disablePortal: true,
      autoFocus: false,
    },
  }}
  maxDate={dayjs(Object.values(departureDates).pop() || '')}
/>

我尝试过使用辅助函数来防止焦点集中在元素上,但这会导致另一个问题,即在其外部单击会滚动回焦点元素。

有人遇到过这样的问题并且可能想出了可行的解决方案吗?

添加 helper.js 函数,有助于不跳转,但随后会导致禁用焦点的问题。

export default function iframeBlurManipulation() {
  const button = document.querySelector('#openDatePickerButton');
  if (button) {
    button.addEventListener('blur', (event) => {
      event.target.focus();
    });
  }
}

reactjs iframe material-ui scroll datepicker
1个回答
0
投票

我通过使用 StaticDatePicker MUI 而不是 DesktopDatePicker MUI 解决了该问题。并不是真正的修复,而是一种解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.