Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Is Opera 10 a supported browser?

    Hi all,

    I've been testing an small script that just renders a "layout" of an application. It works just fine in most of the browsers but not in Opera. I have tested it in the following browsers:
    - On Windows:
    -- Firefox 3.6
    -- Google Chrome 4.1.249.1036
    -- Internet Explorer 8
    -- Safari 4.0.4
    -- Opera 10.51 (*)

    - On Linux:
    - Firefox 3.6
    - Chromium 5.0.307.11
    - Opera 10.10 - Build 4742 (*)

    (*) In both versions of Opera 10, on Windows and Linux the script fails.

    Attached you'll find the index.html page with the script. I have set the creation of the application parts in the load event, based on a suggestion of the isc Log window.

    Reading the release notes of SmartClient 7.0rc2 [1] it says "Opera Beta". What does that mean?

    I enabled the Exception stack trace in Opera. The problem is on line 749 of the minified version of ISC_Core.js, it seems in that is in the Browser detection part (but I'm not sure).

    Code:
    Inline script thread
    Error:
    name: TypeError
    message: Statement on line 749: Cannot convert undefined or null to Object
    stacktrace:   Line 749 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        var _7=isc.Browser.isIE&&isc.Browser.version>6;var _8=_1.callee;var _9=[];var _10=true;if(_3==null)_3=Number.MAX_VALUE;var _11=0;while(_8!=null&&_1!=null&&_11<_3){if(_7){if(_9.contains(_8)){_5.add("    ** recursed on "+isc.Func.getName(_8,true));break}
      Line 1759 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        this.logWarn("negative or zero area: height: "+this.getHeight()+", width: "+this.getWidth()+", refusing to draw"+this.getStackTrace(),"drawing");return false}
      Line 1769 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        function(_1){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return this;if(this.overflow==isc.Canvas.AUTO)this.getTabIndex();if(this.logIsInfoEnabled(this.$n2)){this.logInfo("draw(): drawing "+this.Class+(this.parentElement?" with parent: "+this.parentElement:"")+(!isc.Page.isLoaded()?" before page load":"")+(this.logIsDebugEnabled(this.$n2)?this.getStackTrace():""),this.$n2)}
      Line 29 of inline#2 script in file://localhost/home/iperdomo/tmp/opera-test/index.html: In function setup
          appObj.layout.draw();
      Line 32 of inline#2 script in file://localhost/home/iperdomo/tmp/opera-test/index.html
        setup(myApp);
    Event thread: load
    Error:
    name: TypeError
    message: Statement on line 749: Cannot convert undefined or null to Object
    stacktrace:   Line 749 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        var _7=isc.Browser.isIE&&isc.Browser.version>6;var _8=_1.callee;var _9=[];var _10=true;if(_3==null)_3=Number.MAX_VALUE;var _11=0;while(_8!=null&&_1!=null&&_11<_3){if(_7){if(_9.contains(_8)){_5.add("    ** recursed on "+isc.Func.getName(_8,true));break}
      Line 1759 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        this.logWarn("negative or zero area: height: "+this.getHeight()+", width: "+this.getWidth()+", refusing to draw"+this.getStackTrace(),"drawing");return false}
      Line 1769 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        function(_1){if(isc.$cv)arguments.$cw=this;if(!this.readyToDraw())return this;if(this.overflow==isc.Canvas.AUTO)this.getTabIndex();if(this.logIsInfoEnabled(this.$n2)){this.logInfo("draw(): drawing "+this.Class+(this.parentElement?" with parent: "+this.parentElement:"")+(!isc.Page.isLoaded()?" before page load":"")+(this.logIsDebugEnabled(this.$n2)?this.getStackTrace():""),this.$n2)}
      Line 29 of inline#2 script in file://localhost/home/iperdomo/tmp/opera-test/index.html: In function setup
          appObj.layout.draw();
      Line 2 of eval script 
        ){setup(myApp);
      Line 1084 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        if(isc.isA.Function(_9.action)){_6=(_9.action(_1,_3)!=false)}else{var _10=_9.action;if(_10.destroyed){_4[i]=null;continue}
      Line 1110 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        return(isc.Page.handleEvent(null,isc.EH.LOAD)!=false)}else{try{return(isc.Page.handleEvent(null,isc.EH.LOAD)!=false)}catch(e){isc.Log.$am(e);throw e;}}}
      ...  Line 1403 of linked script file://localhost/home/iperdomo/tmp/opera-test/isomorphic/system/modules/ISC_Core.js
        if(isc.Browser.isIE)_2=this.getWindow().event;this.$h1(this.$jy[_2.type]||_2.type);if(!isc.Browser.isMoz){var _3=_1.call(this,_2)}else{try{var _3=_1.call(this,_2)}catch(e){isc.Log.$am(e);throw e;}}
      Line 2 of eval script 
        ){var returnVal=arguments.callee.$ch.isc.EH.dispatch(arguments.callee.$j2,event);if(returnVal==false)event.preventDefault();else if(returnVal==isc.EH.STOP_BUBBLING)event.stopPropogation();return returnVal;
      ...
    Any ideas on how to solve the problem? Will SmartClient version 7.0 "final" officially support Opera?

    Any ideas on how I can help to solve this issue?

    [1] http://www.smartclient.com/docs/7.0rc2/docs/readme.html

    Best Regards,

    Iván
    Attached Files

    #2
    Hi again,

    I wanted to know what's going on, so I set up the same code but this not using the compressed/minimized version of SmartClient, but the one in smartclientSDK/source/client.

    Using Opera's Dragonfly [1] dev-tool I found the the following:

    * My canvas (VLayout) gets a zero height, so on line 2943 of Canvas.js a logWarn() call is made. Inside the logWarn call there is a getStackTrace, which fails on debug.js - line 204. This script has the following sentence:
    Code:
    var func = args.callee;
    But args is undefined because the getStackTrace() don't use any parameter. In fact none of the getStackTrace calls in Canvas.js use any parameter.

    On debug.js the getStackTrace signature is:
    Code:
    getStackTrace : function (args, ignoreLevels, maxLevels) { ... }
    args is undefined so Opera is more strict about it and that's why I get the "Cannot convert undefined or null to Object" error message.

    I made a small fix to see if args is undefined and now I don't get the error message, but still I can't see my canvas in the page. The object is created but with 0 height. I have set the height to "100%" but in some part of the init() process it gets a value of 0.

    Any ideas on this topic?

    [1] http://dev.opera.com/articles/view/introduction-to-opera-dragonfly/

    Best Regards,

    Iván

    Comment


      #3
      Is Opera a supported browser?

      I had a similar problem. Changing the html page headers from

      Code:
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      to

      Code:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd"
      seemed to work, though I've only tested on OS X.


      Best Regards

      Chris

      Comment

      Working...
      X