Internet explorer 8 Dojo:对话框刷新TabContainer中的dojox.layout.ContentPane

Internet explorer 8 Dojo:对话框刷新TabContainer中的dojox.layout.ContentPane,internet-explorer-8,dojo,Internet Explorer 8,Dojo,我对InternetExplorer7/8中的Dojo有一个问题(在Firefox中可以正常工作) 基本上,我有一个选项卡容器,其中有许多选项卡(它们是dojox.layout.ContentPane的)。在其中一个选项卡上,我想有一个“评论框”,弹出一个对话框,要求用户输入一些内容。然后通过调用后端保存注释,我希望重新加载选项卡以显示新注释 “我的保存”按钮的逻辑工作原理如下: <button data-dojo-type="dijit.form.Button" type="button

我对InternetExplorer7/8中的Dojo有一个问题(在Firefox中可以正常工作)

基本上,我有一个选项卡容器,其中有许多选项卡(它们是dojox.layout.ContentPane的)。在其中一个选项卡上,我想有一个“评论框”,弹出一个对话框,要求用户输入一些内容。然后通过调用后端保存注释,我希望重新加载选项卡以显示新注释

“我的保存”按钮的逻辑工作原理如下:

<button data-dojo-type="dijit.form.Button" type="button" data-dojo-props="iconClass:'dijitIcon dijitIconSave', showLabel: true" title="Add your comment">Add Comment
    <script type="dojo/on" data-dojo-event="click" data-dojo-args="evt">
      require(["dojo/dom"], function(dom)
      {
        var tText = dijit.byId('comment_70').get('value');
        if (tText == '')
        {
          alert('You have not entered any comment');
          return;
        }
        var tJSONRPC = new JSONRpcClient('JSON-RPC');
        try
        {
          tJSONRPC.be.addComment('70', tText);
          var tTab = dijit.byId('Detail_70');
          tTab.refresh();
        }
        catch (Ex)
        {
          alert(Ex);
        }
      });
    </script></button>
添加注释
require([“dojo/dom”],函数(dom)
{
var tText=dijit.byId('comment_70').get('value');
如果(tText=='')
{
警报(“您没有输入任何注释”);
返回;
}
var tJSONRPC=新的JSONRpcClient('JSON-RPC');
尝试
{
tJSONRPC.be.addComment('70',tText);
var tTab=dijit.byId('Detail_70');
tTab.refresh();
}
捕获(Ex)
{
警报(Ex);
}
});
看起来不太累人(末尾的70是ID,这样用户可以同时打开多个标签)


如前所述,这在Firefox中运行良好,但在IE 8/7中不起作用,它在dojo中生成的一些代码中抛出了一个错误(_32.focus();准确地说),我在调试控制台中得到的错误消息是“对方法或属性访问的意外调用”

尝试一下,使用您的代码
tTab.refresh()

几乎不可能知道抛出的异常来自何处——您应该使用developement dojo-1.M.M-src/dojo/dojo.js代码来优化函数——并且变量名会被扩展(以及在调试过程中的有用注释)


上面的原因是为了消除在处理button onclick focus事件时发生的异常(刷新会将选项卡中的DOM连同您的按钮一起删除)

它是如何挂起的?你有问题吗?还是你已经解决了?
setTimeout(function() { tTab.refresh(); }, 0); // whenIdle