var consoleTest = /(^.|\b)console\./; var useCustomConsole = !(function () { var ok = window.console !== undefined; try { window.console.log('jsbin init test'); } catch (e) { ok = false; } return ok; })(); function getPreparedCode() { var parts = [], source = '', js = ''; try { source = editors.html.getCode(); } catch (e) {} try { js = editors.javascript.getCode(); } catch (e) {} // redirect JS console logged to our custom log while debugging if (consoleTest.test(js)) { if (useCustomConsole) { js = js.replace(/(^.|\b)console\./g, '_console.'); } else { js = js.replace(/(^.|\b)console\./g, 'window.top.console.'); } } // note that I'm using split and reconcat instead of replace, because if the js var // contains '$$' it's replaced to '$' - thus breaking Prototype code. This method // gets around the problem. if (!$.trim(source)) { source = "
\n" + js + ""; } else if (/%code%/.test(source)) { parts = source.split('%code%'); source = parts[0] + js + parts[1]; } else if (js) { parts = source.split('