Browse Source

Use typeof to check for console instead of eval.

I'm pretty sure the old check wasn't working because of var hoisting,
not typeof.

Refs #3245 cc @andyli
Bruno Garcia 10 years ago
parent
commit
6ded3f624b
1 changed files with 3 additions and 1 deletions
  1. 3 1
      genjs.ml

+ 3 - 1
genjs.ml

@@ -1289,8 +1289,10 @@ let generate com =
 		List.iter (fun f -> print_obj f "$hx_exports") exposedObject.os_fields;
 		List.iter (fun f -> print_obj f "$hx_exports") exposedObject.os_fields;
 	end;
 	end;
 
 
+	(* Provide console for environments that may not have it. *)
 	if not (Common.defined com Define.JsEs5) then
 	if not (Common.defined com Define.JsEs5) then
-		spr ctx "var console = (1,eval)('this').console || {log:function(){}};\n";
+		spr ctx "var console = typeof console != \"undefined\" ? console : {log:function(){}};\n";
+
 	(* TODO: fix $estr *)
 	(* TODO: fix $estr *)
 	let vars = [] in
 	let vars = [] in
 	let vars = (if has_feature ctx "Type.resolveClass" || has_feature ctx "Type.resolveEnum" then ("$hxClasses = " ^ (if ctx.js_modern then "{}" else "$hxClasses || {}")) :: vars else vars) in
 	let vars = (if has_feature ctx "Type.resolveClass" || has_feature ctx "Type.resolveEnum" then ("$hxClasses = " ^ (if ctx.js_modern then "{}" else "$hxClasses || {}")) :: vars else vars) in