问题 #2637💬 已回答提出于 2020年3月11日作者 mcottret1 个反应

:预览模式和自动组件边界切换

快速解答作者 artf1

无论如何,预览运行执行时按钮>按钮都已经被禁用了,对吗? 哦,对了 🤦 ♂从你对链接问题的回复来看,我理解这种行为是有意为之,所以也许解决办法就是像你说的那样,把两个按钮的上下文分开? 好吧,这可能真的有效......因为处于不同的上下文,其他按钮不会阻止它,你也可以完全不依赖按钮(正如你说的,我可以把它放在另一个面板里),而是通过使用 [Commands.getActive API](https://grapesjs.com/docs/api/commands.html#getactive) 来检查命令的状态。 “''js 如果(编辑器中的“SW-可见性”。Commands.getActive()) { SW-可见性已激活 }...

阅读下方完整回答 ↓

问题

又见面了:) 我们团队最近开始定制编辑器并移除网页预设,可能发现了一些与预览模式相关的bug:退出预览模式时,如果默认的“选项”面板已被移除,或者“sw-visibility”按钮已被移除(来自[这里](https://github.com/artf/grapesjs/blob/dev/src/commands/view/Preview.js#L52),如果是“editor”,则会触发错误。Panels.getButton('options', 'sw-visibility')' 结果为 null,参见 #2589) 一个建议的解决方案是循环浏览面板集合(通过“editor.”检索)。Panels.getPanels')来查找“sw-visibility”按钮,并添加空检查以避免错误。 ---当“预览”和“sw-visibility”按钮位于同一面板时,#2589引入的行为会被破坏,这似乎来自['ButtonView's'active“变更监听器](https://github.com/artf/grapesjs/blob/dev/src/panels/view/ButtonView.js#L101),该按钮会禁用面板中所有活跃按钮。所以如果预览被激活,它会在执行命令前关闭“sw-visibility”按钮,之后会破坏其[active检查](https://github.com/...

回答(3)

artf2020年3月21日

无论如何,预览运行执行时按钮>按钮都已经被禁用了,对吗? 哦,对了 🤦 ♂从你对链接问题的回复来看,我理解这种行为是有意为之,所以也许解决办法就是像你说的那样,把两个按钮的上下文分开? 好吧,这可能真的有效......因为处于不同的上下文,其他按钮不会阻止它,你也可以完全不依赖按钮(正如你说的,我可以把它放在另一个面板里),而是通过使用 [Commands.getActive API](https://grapesjs.com/docs/api/commands.html#getactive) 来检查命令的状态。 “''js 如果(编辑器中的“SW-可见性”。Commands.getAct...

artf2020年3月18日

感谢@mcottret所有的参考资料,写得真好:)当预览和 sw-visibility 按钮在同一面板时,#2589 引入的行为会被破坏,这似乎来自 ButtonView 的活跃变更监听器,该监听器会禁用面板中的所有活动按钮。所以如果预览被激活,它会在执行命令前关闭 sw-visibility 按钮,之后会破坏当前的检查。 我认为在这种情况下,我们应该先通过检查 sw-visibility 是否激活来创建一个变量标志,然后再做: https://github.com/artf/grapesjs/blob/85b7b82103e12fb01a3700b1002a57a7b60ccaf1/src...

mcottret2020年3月20日

谢谢你的回复@artf! 抱歉,我不太确定该怎么做,据我了解,[active change listener](https://github.com/artf/grapesjs/blob/dev/src/panels/view/ButtonView.js#L101)是在“Preview”的“run”之前执行的,所以“sw-visibility”按钮无论如何都应该在执行“Preview”的“run”时被禁用,对吗? 根据你对相关问题的回复(https://github.com/artf/grapesjs/issues/2273#issuecomment-600615794),我理解这种行为是有...

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

浏览插件分类

直接跳转到市场上的插件分类页面。