Chinaunix首页 | 论坛 | 博客
  • 博客访问: 490847
  • 博文数量: 33
  • 博客积分: 4168
  • 博客等级: 上校
  • 技术积分: 675
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-26 20:21
文章分类

全部博文(33)

文章存档

2013年(8)

2012年(2)

2011年(7)

2010年(1)

2009年(4)

2008年(11)

分类:

2008-08-31 21:52:29

  几天一网友向本人提出了如题所说的一个问题: PB11的webform发布成的数据窗口分页浏览时,如果单击“前页/后页”后,又马上快速单击“后页/前页”文字按钮,网页会报告一个JS错误:
 
后来本人经分析发现,该问题出现在PB11的一个名为dwcommon.js文件中,原始位置在:
X:\Program Files\Sybase\PowerBuilder 11.X\DotNET\webroot\scripts下,焦点在如下函数中:
function HTDW_performAction(action)
{
    this.action = action;
 if(action.substr(0,7) == "DDDWCB|")
 {
  this.dddwcallback( HTDW_dddwCallbackHandler, action ); 
  return;
 }
 if ((this.pagingMode == DW_PAGING_XMLCLIENTSIDE) &&
  (action == "PageNext" ||
   action == "PagePrior" ||
   action == "PageFirst" ||
   action == "PageLast"))
 {
  this.xmlRenderer.transformClientSidePage( action );
 }
 else if (this.pagingMode == DW_PAGING_XMLCLIENTSIDE &&
  action == "InsertRow")
 {
  this.xmlRenderer.insertClientSide( );
 }
 else if (this.pagingMode == DW_PAGING_XMLCLIENTSIDE &&
  action == "AppendRow")
 {
  this.actionRow = this.rows.length;
  this.xmlRenderer.insertClientSide( );
 }
 else if (this.pagingMode == DW_PAGING_XMLCLIENTSIDE &&
  action == "DeleteRow")
 {
  this.xmlRenderer.deleteClientSide( );
 }
 else if (this.b4GLWeb)
    {
  var tempType;
  tempType = eval('typeof goWindowManager');
  if(tempType == "object")
  {
   if((this.bIsButtonPress + "" != "undefined") && this.bIsButtonPress )
   {
    this.submit(); 
    return;
   }    
  }
  if ((this.pagingMode == DW_PAGING_CALLBACK) && (this.callback + "" != "undefined") )
   this.callback( HTDW_callbackHandler, action );
  else
        // cause the surrounding page to be submitted
  if (this.submit + "" != "undefined") //Asp.Net
   this.submit();
  else
         psPage.Submit(); //Jsp Target
 }
 else // deal with it like in 7.0
    {
         var rc = 0;
        // OnSubmit can prevent the page from being submitted by returning 1
        if (this.eventImplemented("OnSubmit"))
            {
            if(this.autoEventBind)
                               rc = _evtDefault(this.OnSubmit ());
            else
                rc = _evtDefault(this.OnSubmit (this));
                           }
        if (rc == 0)
            {
            this.actionField.value = this.action;
            this.contextField.value = this.GetFullContext();
            this.submitForm.submit();
            }
     }
}
 
我们观察红色标注的几行,其中: psPage.Submit(); //Jsp Target 按说明应是用于jsp网页的,照理在asp.net下不应该运行到这里,可实际跟踪发现,如果用户是按上述所示操作前翻后翻的话,this.submit = "undefined"所以就执行到 psPage.Submit(); 了,这样自然就会出现对象未定义的错误。
 
修改:  只要直接屏蔽该条语句即可
 
               .
               .
               .
   else
         psPage.Submit(); //Jsp Target
               ||
               ||
               V
    else
      {
        //psPage.Submit(); //Jsp Target
      }
 
 
阅读(2603) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-10-10 12:21:28

谢谢,是我。