在Jquery对话框中呈现Blockly UI时,不允许编辑输入。
原因是使用下面的输入字段将div块添加到Dom中
<div class="blocklyWidgetDiv" style="direction: ltr; display: block; left: 514.052px; top: 133.094px; width: 91.5547px;">
<input class="blocklyHtmlInput" value="dfgfdgdfgdfg">
</div>
但是实际的blocklyDiv附加在Jquery对话框下。输入字段直接附加到html正文。
当我在Dialog中移动blocklyWidgetDiv时,它在页面中的某些位置显示输入字段,而不是在确切的编辑器位置显示。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据你的描述,问题在于Blockly UI在JQuery对话框中呈现时,输入字段没有正确地与Blockly编辑器的div块对齐或关联,导致无法编辑。这通常是因为DOM元素的位置或层级关系处理不当。以下是一些建议来解决这个问题:
确保DOM结构正确:
blocklyDiv
和blocklyWidgetDiv
都直接作为jQuery对话框内容的一部分被添加。这意味着你应该在创建或打开对话框时动态地将这两个div插入到对话框的内容容器中。更新Blockly配置以适应新的DOM结构:
blocklyDiv
和(如果需要)blocklyWidgetDiv
的ID。如果你改变了这些div的位置,你需要在Blockly的配置中反映这一变化。调整CSS样式:
position: relative;
或position: absolute;
),并且没有被其他元素遮挡(通过调整z-index)。重新定位和尺寸调整:
Blockly.svgResize()
方法来确保Blockly根据其容器的大小进行调整。如果你是在对话框显示之后才初始化Blockly,确保在对话框完全显示并布局完成后再执行初始化操作。事件委托和冒泡问题:
示例代码片段(假设你使用的是jQuery UI对话框):
// 假设这是你的jQuery UI对话框初始化
$("#yourDialog").dialog({
autoOpen: false,
open: function() {
// 动态添加Blockly的div到对话框内
$(this).append('<div id="blocklyDiv"></div><div id="blocklyWidgetDiv"></div>');
// 初始化Blockly
Blockly.inject('blocklyDiv', {toolbox: yourToolboxXML});
// 重置Blockly大小以适应新位置
Blockly.svgResize();
}
}).dialog("open");
请根据你的具体实现调整上述代码。希望这些建议能帮助你解决问题!