- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个扩展 dijit.Dialog 的类,但仅为我的站点设置默认功能和按钮。单击对话框的取消按钮时,将运行以下代码:
this.actionDialog.destroyRecursive();
this.actionDialog.destroy();
nb this.actionDialog = dijit.Dialog
有时(不总是)会抛出以下错误:
Uncaught TypeError: Cannot call method 'destroy' of undefined
DialogUnderlay.xd.js:8
这会导致以下对话框无法正确显示。我正在使用来自 Google API 的 1.5。我是否遗漏了底层代码?
Ken 回答后抛出错误:
exception in animation handler for: onEnd
TypeError: Cannot read property 'style' of null
均来自 dojo.xd.js:14
。但是代码仍然可以正常工作。
最佳答案
除了由于某些原因 dijit.DialogUnderlay
代码变得困惑之外,我仍然不完全确定问题出在哪里。 FWIW,这不会发生在 Dojo 1.6 中。
当我在寻找一些潜在的解决方案时,我似乎无意中发现避免这个问题可能就像在销毁对话框之前立即在对话框上调用 hide()
一样简单,例如:
this.actionDialog.hide();
this.actionDialog.destroyRecursive();
或者,您可能有兴趣隐藏对话框,然后在隐藏动画完成后销毁它。
以下是在 Dojo 1.5 及更早版本(已测试 1.3+)上的实现方法:
dlg.connect(dlg._fadeOut, 'onEnd', function() {
this.destroyRecursive();
});
dlg.hide();
在 1.6 中,fadeOut 动画不再暴露在实例上(当然,它在技术上是私有(private)的),但是 onHide
现在会在动画结束时触发(而之前它会在开始了)。不幸的是,需要一个 setTimeout 来解决由于分支中的其他代码调用 onHide
而发生的错误,它假设实例上仍然存在某些东西,但在我们销毁它之后不会存在(请参阅#12436 ).
dlg.connect(dlg, 'onHide', function() {
setTimeout(function() { dlg.destroyRecursive(); }, 0);
});
dlg.hide();
在 JSFiddle 上查看它的运行情况:http://jsfiddle.net/3MNRu/1/ (有关问题中的原始错误,请参阅 the initial version)
关于javascript - dojo dijit.Dialog 破坏底层错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285758/
我的 Dojo 应用程序包含几个小部件,它们都在 dijit.registry(dijit.WidgetSet 的一个实例)中自动注册。我想利用 filter() ( Link ) 或 map() (
我使用的是 Dojo 工具包版本 1.3.1。我在 jsp 页面中定义了以下 dijit: Zoom In hi
我正在尝试以编程方式创建这样的布局: 我使用的是 dojo 1.7,布局初始化可能存在问题。 这是我的 attempt . 谢谢你帮助我 最佳答案 让BorderContainer设置 Dialog
我有一个包含模板化表单的dijit.dialog。当对话框可见并且我调整窗口大小时,表单高度会减小(即使我增加/减小窗口大小)。是什么导致了这种奇怪的行为以及如何防止它?谢谢。 代码:@LoginFo
我有一个菜单,其内容需要根据用户交互进行显着更改。这意味着需要引入一些新的菜单项,也需要删除一些菜单项。查看 Dojo 已发布的 API 文档,似乎没有一种方法可以在不删除现有项目并从头开始重新创建菜
我有以下小部件 HTML。 后面带有以下 Javascript: /** * Javascript for ExpandableSearchComponen
我正在尝试以编程方式将 dijit/布局/内容 Pane 添加到 dijit/标题 Pane 。我遇到的问题是我无法让内容 Pane 进入标题 Pane ,它被放置在它下面。我的代码是这样的:知道我做
我想要的是一个表单,在提交时运行验证检查,并突出显示所有无效字段并添加工具提示。 我正在有效地寻找这样的东西: dojo.forEach(dijit.byId('myForm')._invalidWi
我已经能够将带有两个 MenuItem 的简单 dijit.Menu 绑定(bind)到带有 Menu.bindDomNode(Tree.domNode) 的 dijit.Tree 的节点,但我想改进
我正在尝试对 dijit/Dialog 的默认行为进行简单的更改。我希望在单击底层(背景)时关闭对话框。 我在以前的 Dojo 化身中做过一次,但我很难用新的 AMD/requireJs 风格来做。
当您使用 dijit.ComboBox 时,提前输入建议将作为 dijit.Menu 实现。我有一个设计要求建议行的匹配部分是正常的,不匹配的部分是粗体。 dojo 创建的结构是这样的:
当我在客户端为我的一个应用程序进行验证时。我脑子里有这些问题。 问题一:dijit.byId('someId').value 和 dijit.byId('someId').get('value') 有
我正在尝试禁用使用 store 填充的 dijit/Form/FilteringSelect 控件中的选项。 遵循本指南:http://dojotoolkit.org/documentation/tu
如何使 titlePane 的高度动态变化,以便在页面加载后向 Pane 添加内容时 TitlePane 会展开? 最佳答案 看起来富内容编辑器是一个异步加载的 iframe 混淆了初始布局。 正如@
我似乎找不到一种方法来要求过滤选择输入具有一定的长度。我试过这样: new dijit.form.FilteringSelect({ 'name': 'bla', 'store': j
我对 Dojo 比较陌生,正在尝试掌握 dijit 的窍门。在此处查阅 Dojo 的 dijit/form/Button 小部件的文档后: http://dojotoolkit.org/referen
我有一个 Dijit Dialog (jsfiddle) 以编程方式创建。当调用对话框显示时,我会在运行时传递按钮的 id。我正在尝试创建单击事件函数,以在运行时为传递的 id 执行。 但是事件并未执
我有一个场景。在其中一个表单中,3 个一组中有 18 个字段,但一次只能有一组(3 个字段)具有值。任何人都可以告诉我如何以最好的方式做到这一点,是否有类似在 dijit 中创建字段组之类的事情?我可
我正在尝试声明一个 dijit TextBox,但我无法将 focus 事件附加到它。 我试过以声明的方式这样做: alert("hi");
我的对话框定义如下
我是一名优秀的程序员,十分优秀!