#3138·flatpickr

在不同的窗口/ 文档中渲染的平板

作者: vishwakulkarni6116创建于 2026年9月4日更新于 2026年9月16日

我在React应用程序中使用了“反应-充气器”,内部使用“充气器”。

我们的应用程序支持使用**React Portals将组件渲染到单独的浏览器窗口中. ** 新窗口是使用'window.open ()'创建的,包含反应-平面抽取器的React组件被制成新窗口的文档.

概念上:

新建窗口=窗口. open(...);

创建 Portal ()
< Flatpicker... / > , (中文) :
新 Window.文档。
(三)

当将反应-平平拾取器/平平拾取器制成这个新窗口时,平平拾取器失败,其出错类似于:

此。 flatPickr 未定义

<img宽="562"高="606" alt="Image" src="https://GitHub.com/user-attachments/assets/2383fbd0-e69e-4e44-8809-dfdad85d92d7" / (中文(简体) ).

** 循环原因**

在调试后,我注意到平板电脑使用“节点”和“HTMlelement”等全球DOM构造器进行检查。

当组件被转换成不同的浏览器窗口时,这些检查可能会出问题,因为每个窗口都有自己的DOM Globals集.

例如:

窗口。 (原始内容存档于2017-10-21). Node!. newWindow. 节点
(原始内容存档于2017-10-21). HTMLELENT!.

因此,在分离窗口中创建的元素可能无法通过诸如:

节点元素实例
HTML 元素实例

当节点 / HTMLEment 提及主窗口的构造器时。

这与使用跨浏览器窗口的出入口的回放应用程序特别相关,因为回放组件是同一应用程序的一部分,但其DOM元素属于不同的Document.

** 可能的解决办法**

在可能的情况下,相关的DOM类型检查可以使用DOM属性,而不是依赖于节点和HTMLElement等全局构造器.

例如,元素检查可以使用:

'元素?.nodeType * * 1'

这就避免了跨窗口存在'问题,因为NodeType'是DOM节点本身的财产,并不取决于Node'或HTMlelement'建构器来自哪个窗口。

根据具体使用情况,可能还有其他适当的DOM财产检查。

** 请求**

平板电脑能否考虑让这些 DOM 类型检查 ** 交叉窗口/文档** ?

我通过反应充气抽取器遇到这个问题,但根本问题似乎在于Flatpicker的DOM类型检查,而不是反应包本身.

我还研究了可能的解决办法,如果这种做法可以接受,我很乐意提交一份公关报告.

内容来源: flatpickr/flatpickr