I just filed it as http://openlaszlo.org/jira/browse/LPP-8431
On Mon, Aug 31, 2009 at 2:26 PM, Max Carlson <[email protected]> wrote: > Okay, we're only loading the 'simple' version for IE 6 and older versions > of safari: > > if ((lz.embed.browser.isIE && lz.embed.browser.version < 7) || > (lz.embed.browser.isSafari && lz.embed.browser.version <= 419.3)) { > > It sounds like we should be using simple for IE 7 also... Henry did you > file a bug for this one yet? It seems pretty important! > > > Max Carlson wrote: > >> I'll look into this... I noticed something similar in webtop (only in IE) >> where a global property was being overwritten - eek! >> >> P T Withington wrote: >> >>> Inspecting the function reveals: >>> >>> ERROR @lpp-8408.lzx#3: /view/view.setAttribute('valign', 'absmiddle'): >>> Invalid argument. Valid choices are: 'top', 'middle', or 'bottom'. >>> ERROR: super.open is undefined in open >>> lzx> Debug.inspect(open) >>> «Function(0)#2» >>> «Function(0)#2| open» >>> lzx> _.toString() >>> 'function open () {\nwith (this) {\n/* -*- file: lz/alert.lzx#66.13 -*- >>> */\nthis.result = null;\nif (this.onresult) {\n/* -*- file: #67 -*- */\n/* >>> -*- file: #68 -*- */\nthis.onresult.sendEvent(null)\n};\n/* -*- file: #69 >>> -*- */\n/* -*- file: #70 -*- */\n(arguments.callee["$superclass"] && >>> arguments.callee.$superclass.prototype["open"] || >>> this.nextMethod(arguments.callee, "open")).call(this)\n}}' >>> >>> so, somehow, window.open is getting smashed to be this method from >>> lz.alert. >>> >>> My suspicion: IE is _still_ implementing Javascript incorrectly, and >>> when you have an expression of the form: >>> >>> var foo = function foo () ... >>> >>> It is defining the global foo, even though in a function expression the >>> name of the function is supposed to be ignored. If this is true, it is >>> amazing that anything in IE works at all. >>> >>> The server is supposed to be detecting when the client is IE and is >>> supposed to serve up the *-simple versions of the LFC (which omit names from >>> function expressions), and is also supposed to compile user code with the >>> function expression names elided (we include them normally because the >>> Firefox and Safari debugger will use them to make backtraces more >>> intelligible). >>> >>> Please file a bug. I have 3 theories: bit rot, failure to detect IE in >>> the compiler path, or, the compiler is not recording the client browser bit >>> as effecting the cache and is serving up a cached version that is incorrect. >>> >>> On 2009-08-31, at 13:30, Henry Minsky wrote: >>> >>> In a DHTML app, *only in IE7* and *only in Debug mode*, when I click >>>> right on the canvas to get the default Laszlo menu, and click on >>>> "About Openlaszlo", >>>> >>>> >>>> ERROR: super.open is undefined in open >>>> lzx> Debug.inspect(super.open is undefined in open) >>>> «LzError(39)#1» { >>>> file: null >>>> length: 39 >>>> line: null >>>> message: 'super.open is undefined in open' >>>> } >>>> «LzError(39)#1| super.open is undefined in open» >>>> lzx> >>>> >>>> I believe this is happening in this LzBrowserKernel.loadURL method >>>> which tries to load a specified URL. What is weird is that this doesn't >>>> happen if I turn on backtrace, it only happens in regular debug mode. >>>> >>>> >>>> If I look at the compiled code js code, for debug mode it says this, >>>> there >>>> is >>>> no reference to super or our call-next-method >>>> >>>> Class.make("LzBrowserKernel", null, null, ["loadURL", >>>> function loadURL (url_$1, target_$2, features_$3) { >>>> /* -*- file: -*- */ >>>> /* -*- file: kernel/dhtml/LzBrowserKernel.lzs#24.14 -*- */ >>>> switch (arguments.length) { >>>> case 1: >>>> /* -*- file: #25 -*- */ >>>> target_$2 = null;;case 2: >>>> features_$3 = null >>>> }; >>>> /* -*- file: #25 -*- */ >>>> if (target_$2 != null) { >>>> /* -*- file: #25 -*- */ >>>> /* -*- file: #26 -*- */ >>>> if (features_$3 != null) { >>>> /* -*- file: #26 -*- */ >>>> /* -*- file: #27 -*- */ >>>> window.open(url_$1, target_$2, features_$3) >>>> } else { >>>> /* -*- file: #28 -*- */ >>>> /* -*- file: #29 -*- */ >>>> window.open(url_$1, target_$2) >>>> }} else { >>>> /* -*- file: #32 -*- */ >>>> window.location = url_$1 >>>> }} >>>> /* -*- file: -*- */ >>>> , >>>> >>>> The code in LzBrowserKernel just calls window.open ... >>>> >>>> >>>> /** >>>> * @access private >>>> */ >>>> class LzBrowserKernel { >>>> >>>> /** >>>> * Loads a URL in the browser, optionally in a target >>>> * >>>> * @param String url: URL to load >>>> * @param String target: Optionally specifies a named frame to display >>>> the >>>> contents of the URL. >>>> * The document specified by URL is loaded into the current browser >>>> frame >>>> by default. >>>> */ >>>> static function loadURL ( url, target=null, features=null ){ >>>> if (target != null) { >>>> if (features != null) { >>>> window.open(url, target, features); >>>> } else { >>>> window.open(url, target); >>>> } >>>> } else { >>>> window.location = url; >>>> } >>>> } >>>> >>>> -- >>>> Henry Minsky >>>> Software Architect >>>> [email protected] >>>> >>> >>> >>> >> > -- > Regards, > Max Carlson > OpenLaszlo.org > -- Henry Minsky Software Architect [email protected]
