dojo ie9 destoryRecursive on form
Posted
技术标签:
【中文标题】dojo ie9 destoryRecursive on form【英文标题】: 【发布时间】:2011-10-24 17:47:41 【问题描述】:我有一个使用 xhrPost 提交的表单,然后返回表单结果,然后再次表单让用户输入更多详细信息。该代码在 Chrome 中有效,但在 IE 中,destroy 和 destroyRecursive 似乎不起作用,并且 ajax 返回将导致小部件已注册错误。
表单被加载到dojo对话框中,使用声明格式,当对话框打开并准备好时调用此函数:
var loadFunc = function()
dojo.parser.parse('quickaddcontainer');
dojo.query('#quickAddBooking').onsubmit(function(e)
e.preventDefault();
var xhrArgs =
form: dojo.byId("quickAddBooking"),
url: '/booking/admin/quickadd?popup=1',
handleAs: "text",
load: function(data)
dojo.place(data, 'quickaddcontainer', 'replace');
loadFunc();
,
error: function(error)
dojo.byId("quickaddcontainer").innerhtml = "Form error: "+error;
dojo.byId('quickaddcontainer').innerHTML = 'Loading...';
dojo.xhrPost(xhrArgs);
dijit.byId('quickAddBooking').destroyRecursive();
);
任何想法为什么这在 IE 中不起作用?我已经尝试在加载函数中放置一个 destroy/destroyRecursive,在 xhrPost 调用甚至 findWidgets - destroyRecursive 之前,但似乎没有任何作用。
Moan:有时用 dojo 做这么简单的事情似乎很难——在其他框架中重新渲染永远不会导致问题。
【问题讨论】:
【参考方案1】:似乎我已经回答了我自己的问题...将 innerHTML 调用移到底部有效。
dojo.xhrPost(xhrArgs);
dijit.byId('quickAddBooking').destroyRecursive();
dojo.byId('quickaddcontainer').innerHTML = 'Loading...';
【讨论】:
在这种情况下,我不会那么责备 Dojo。你正在做一些非常奇怪的事情......尽管可以随意诅咒 IE :) InnerHTML 很讨厌,destroyRecursive 通常在清理时调用(不是在正常操作期间),所有查询的东西都比 dojo 小部件更像 JQuery。以上是关于dojo ie9 destoryRecursive on form的主要内容,如果未能解决你的问题,请参考以下文章
Dojo dojo.rawXhrPost 和 dojo.xhrPost
dojo的ready函数:dojo.ready(以前的dojo.addOnLoad)
如何将 dojo (dojo 0.x) FilteringTable 迁移到 (dojo 1.6) 中的 DataGrid?