在不同的窗口/ 文档中渲染的平板
我在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