upjs-rails 0.3.0 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58b9bda1086a0ac50783289b009de30dd0ffa228
4
- data.tar.gz: 83901a4346b18ede730a146b6409e0b50fc7d4d5
3
+ metadata.gz: f2bd908d4b8ae9ccc80617aab947a39f49e91cd6
4
+ data.tar.gz: 3d82e0f710813f128f9e8ae4aa48311b0990c04f
5
5
  SHA512:
6
- metadata.gz: 948fc5f12e782d99b428761a381cb8ea61ea5158d47fb1c6ac3820863bd57614a8cd6a89afe89bc408ea71307656824ac65966350247d834869adb1c74c98d99
7
- data.tar.gz: 364e9d0048c8d594f2de7786ee7d4f559179683e71fe4de6dafe7e084cc263e814f8cadf3bcae9911e34073be32c916bebe015375390c016115729b15bf69b78
6
+ metadata.gz: 8eac37753503ff8163ff92fc7e37b34c3a8c20a1d76033e0f5784ed6077f52cd4b4bb8e84cc3584c68e83d559f9e7f5a2d62eb9a89f292408de556428a1bfbe3
7
+ data.tar.gz: e8fe7e337a8c754f45b5fe0b5e849ed79d60a8bb95b819a33236a4d98178ddaa4d228489cd48f854099692b31f2f8e21b757e85c2cf03e0ff7afa5f6fd31a4c5
data/dist/up.css CHANGED
@@ -16,6 +16,8 @@
16
16
  top: 50%;
17
17
  left: 50%;
18
18
  transform: translate(-50%, -50%);
19
+ -ms-transform: translate(-50%, -50%);
20
+ -webkit-transform: translate(-50%, -50%);
19
21
  max-width: 100%;
20
22
  max-height: 100%;
21
23
  background-color: #fff;
@@ -35,7 +37,9 @@
35
37
  font-weight: bold;
36
38
  text-transform: uppercase;
37
39
  cursor: pointer;
38
- transform: translateY(-100%); }
40
+ transform: translateY(-100%);
41
+ -ms-transform: translateY(-100%);
42
+ -webkit-transform: translateY(-100%); }
39
43
 
40
44
  .up-modal-content {
41
45
  overflow-x: hidden;
data/dist/up.js CHANGED
@@ -25,7 +25,7 @@ If you use them in your own code, you will get hurt.
25
25
  var __slice = [].slice;
26
26
 
27
27
  up.util = (function() {
28
- var $createElementFromSelector, ajax, castsToFalse, castsToTrue, clientSize, contains, copy, copyAttributes, createElement, createElementFromHtml, createSelectorFromElement, cssAnimate, detect, each, error, escapePressed, extend, findWithSelf, forceCompositing, get, ifGiven, isArray, isBlank, isDefined, isFunction, isGiven, isHash, isJQuery, isMissing, isNull, isObject, isPresent, isPromise, isStandardPort, isString, isUndefined, last, locationFromXhr, measure, merge, nextFrame, normalizeUrl, option, options, prependGhost, presence, presentAttr, select, temporaryCss, unwrap;
28
+ var $createElementFromSelector, ajax, castsToFalse, castsToTrue, clientSize, contains, copy, copyAttributes, createElement, createElementFromHtml, createSelectorFromElement, cssAnimate, detect, each, error, escapePressed, extend, findWithSelf, forceCompositing, get, ifGiven, isArray, isBlank, isDefined, isFunction, isGiven, isHash, isJQuery, isMissing, isNull, isObject, isPresent, isPromise, isStandardPort, isString, isUndefined, keys, last, locationFromXhr, measure, merge, nextFrame, normalizeUrl, only, option, options, prependGhost, presence, presentAttr, resolvedPromise, select, temporaryCss, trim, unwrap;
29
29
  get = function(url, options) {
30
30
  options = options || {};
31
31
  options.url = url;
@@ -126,7 +126,9 @@ If you use them in your own code, you will get hurt.
126
126
  createElement = function(tagName, html) {
127
127
  var element;
128
128
  element = document.createElement(tagName);
129
- element.innerHTML = html;
129
+ if (isPresent(html)) {
130
+ element.innerHTML = html;
131
+ }
130
132
  return element;
131
133
  };
132
134
  error = function() {
@@ -153,17 +155,47 @@ If you use them in your own code, you will get hurt.
153
155
  return selector;
154
156
  };
155
157
  createElementFromHtml = function(html) {
156
- var htmlElementPattern, innerHtml, match;
157
- htmlElementPattern = /<html>((?:.|\n)*)<\/html>/i;
158
- innerHtml = void 0;
159
- if (match = html.match(htmlElementPattern)) {
160
- innerHtml = match[1];
158
+ var anything, bodyElement, bodyMatch, bodyPattern, capture, closeTag, headElement, htmlElement, openTag, titleElement, titleMatch, titlePattern;
159
+ openTag = function(tag) {
160
+ return "<" + tag + "(?: [^>]*)?>";
161
+ };
162
+ closeTag = function(tag) {
163
+ return "</" + tag + ">";
164
+ };
165
+ anything = '(?:.|\\n)*?';
166
+ capture = function(pattern) {
167
+ return "(" + pattern + ")";
168
+ };
169
+ titlePattern = new RegExp(openTag('head') + anything + openTag('title') + capture(anything) + closeTag('title') + anything + closeTag('body'), 'i');
170
+ bodyPattern = new RegExp(openTag('body') + capture(anything) + closeTag('body'), 'i');
171
+ if (bodyMatch = html.match(bodyPattern)) {
172
+ htmlElement = document.createElement('html');
173
+ bodyElement = createElement('body', bodyMatch[1]);
174
+ htmlElement.appendChild(bodyElement);
175
+ if (titleMatch = html.match(titlePattern)) {
176
+ headElement = createElement('head');
177
+ htmlElement.appendChild(headElement);
178
+ titleElement = createElement('title', titleMatch[1]);
179
+ headElement.appendChild(titleElement);
180
+ }
181
+ return htmlElement;
161
182
  } else {
162
- innerHtml = "<html><body>" + html + "</body></html>";
183
+ return createElement('div', html);
163
184
  }
164
- return createElement('html', innerHtml);
165
185
  };
166
186
  extend = $.extend;
187
+ trim = $.trim;
188
+ keys = Object.keys || function(object) {
189
+ var key, result, _i, _len;
190
+ result = [];
191
+ for (_i = 0, _len = object.length; _i < _len; _i++) {
192
+ key = object[_i];
193
+ if (object.hasOwnProperty(key)) {
194
+ result.push(key);
195
+ }
196
+ }
197
+ return result;
198
+ };
167
199
  each = function(collection, block) {
168
200
  var index, item, _i, _len, _results;
169
201
  _results = [];
@@ -189,7 +221,7 @@ If you use them in your own code, you will get hurt.
189
221
  return !isMissing(object);
190
222
  };
191
223
  isBlank = function(object) {
192
- return isMissing(object) || (isObject(object) && Object.keys(object).length === 0) || (object.length === 0);
224
+ return isMissing(object) || (isObject(object) && keys(object).length === 0) || (object.length === 0);
193
225
  };
194
226
  presence = function(object, checker) {
195
227
  if (checker == null) {
@@ -227,7 +259,9 @@ If you use them in your own code, you will get hurt.
227
259
  return object;
228
260
  }
229
261
  };
230
- isArray = Array.isArray;
262
+ isArray = Array.isArray || function(object) {
263
+ return Object.prototype.toString.call(object) === '[object Array]';
264
+ };
231
265
  copy = function(object) {
232
266
  if (isArray(object)) {
233
267
  return object.slice();
@@ -274,35 +308,32 @@ If you use them in your own code, you will get hurt.
274
308
  @param {Array} args...
275
309
  */
276
310
  option = function() {
277
- var args, match;
311
+ var arg, args, match, value, _i, _len;
278
312
  args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
279
313
  match = null;
280
- args.every(function(arg) {
281
- var value;
314
+ for (_i = 0, _len = args.length; _i < _len; _i++) {
315
+ arg = args[_i];
282
316
  value = arg;
283
317
  if (isFunction(value)) {
284
318
  value = value();
285
319
  }
286
320
  if (isPresent(value)) {
287
321
  match = value;
288
- return false;
289
- } else {
290
- return true;
322
+ break;
291
323
  }
292
- });
324
+ }
293
325
  return match;
294
326
  };
295
327
  detect = function(array, tester) {
296
- var match;
328
+ var element, match, _i, _len;
297
329
  match = null;
298
- array.every(function(element) {
330
+ for (_i = 0, _len = array.length; _i < _len; _i++) {
331
+ element = array[_i];
299
332
  if (tester(element)) {
300
333
  match = element;
301
- return false;
302
- } else {
303
- return true;
334
+ break;
304
335
  }
305
- });
336
+ }
306
337
  return match;
307
338
  };
308
339
  select = function(array, tester) {
@@ -345,7 +376,7 @@ If you use them in your own code, you will get hurt.
345
376
  };
346
377
  temporaryCss = function($element, css, block) {
347
378
  var memo, oldCss;
348
- oldCss = $element.css(Object.keys(css));
379
+ oldCss = $element.css(keys(css));
349
380
  $element.css(css);
350
381
  memo = function() {
351
382
  return $element.css(oldCss);
@@ -395,28 +426,33 @@ If you use them in your own code, you will get hurt.
395
426
  */
396
427
  cssAnimate = function(elementOrSelector, lastFrame, opts) {
397
428
  var $element, deferred, transition, withoutCompositing, withoutTransition;
398
- opts = options(opts, {
399
- duration: 300,
400
- delay: 0,
401
- easing: 'ease'
402
- });
403
429
  $element = $(elementOrSelector);
404
- deferred = $.Deferred();
405
- transition = {
406
- 'transition-property': Object.keys(lastFrame).join(', '),
407
- 'transition-duration': opts.duration + "ms",
408
- 'transition-delay': opts.delay + "ms",
409
- 'transition-timing-function': opts.easing
410
- };
411
- withoutCompositing = forceCompositing($element);
412
- withoutTransition = temporaryCss($element, transition);
413
- $element.css(lastFrame);
414
- deferred.then(withoutCompositing);
415
- deferred.then(withoutTransition);
416
- setTimeout((function() {
417
- return deferred.resolve();
418
- }), opts.duration + opts.delay);
419
- return deferred.promise();
430
+ if (up.browser.canCssAnimation()) {
431
+ opts = options(opts, {
432
+ duration: 300,
433
+ delay: 0,
434
+ easing: 'ease'
435
+ });
436
+ deferred = $.Deferred();
437
+ transition = {
438
+ 'transition-property': keys(lastFrame).join(', '),
439
+ 'transition-duration': opts.duration + "ms",
440
+ 'transition-delay': opts.delay + "ms",
441
+ 'transition-timing-function': opts.easing
442
+ };
443
+ withoutCompositing = forceCompositing($element);
444
+ withoutTransition = temporaryCss($element, transition);
445
+ $element.css(lastFrame);
446
+ deferred.then(withoutCompositing);
447
+ deferred.then(withoutTransition);
448
+ setTimeout((function() {
449
+ return deferred.resolve();
450
+ }), opts.duration + opts.delay);
451
+ return deferred.promise();
452
+ } else {
453
+ $element.css(lastFrame);
454
+ return resolvedPromise();
455
+ }
420
456
  };
421
457
  measure = function($element, options) {
422
458
  var box, coordinates, viewport;
@@ -488,6 +524,24 @@ If you use them in your own code, you will get hurt.
488
524
  locationFromXhr = function(xhr) {
489
525
  return xhr.getResponseHeader('X-Up-Current-Location');
490
526
  };
527
+ only = function() {
528
+ var filtered, key, keys, object, _i, _len;
529
+ object = arguments[0], keys = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
530
+ filtered = {};
531
+ for (_i = 0, _len = keys.length; _i < _len; _i++) {
532
+ key = keys[_i];
533
+ if (object.hasOwnProperty(key)) {
534
+ filtered[key] = object[key];
535
+ }
536
+ }
537
+ return filtered;
538
+ };
539
+ resolvedPromise = function() {
540
+ var deferred;
541
+ deferred = $.Deferred();
542
+ deferred.resolve();
543
+ return deferred.promise();
544
+ };
491
545
  return {
492
546
  presentAttr: presentAttr,
493
547
  createElement: createElement,
@@ -537,7 +591,11 @@ If you use them in your own code, you will get hurt.
537
591
  castsToTrue: castsToTrue,
538
592
  castsToFalse: castsToFalse,
539
593
  locationFromXhr: locationFromXhr,
540
- clientSize: clientSize
594
+ clientSize: clientSize,
595
+ only: only,
596
+ trim: trim,
597
+ keys: keys,
598
+ resolvedPromise: resolvedPromise
541
599
  };
542
600
  })();
543
601
 
@@ -551,13 +609,76 @@ Browser interface
551
609
  */
552
610
 
553
611
  (function() {
612
+ var __slice = [].slice;
613
+
554
614
  up.browser = (function() {
555
- var url;
615
+ var canCssAnimation, canPushState, ensureConsoleExists, isSupported, loadPage, memoize, u, url;
616
+ u = up.util;
617
+ loadPage = function(url, options) {
618
+ var $form, csrfParam, csrfToken, metadataInput, method, target;
619
+ if (options == null) {
620
+ options = {};
621
+ }
622
+ method = u.option(options.method, 'get').toLowerCase();
623
+ if (method === 'get') {
624
+ return location.href = url;
625
+ } else if ($.rails) {
626
+ target = options.target;
627
+ csrfToken = $.rails.csrfToken();
628
+ csrfParam = $.rails.csrfParam();
629
+ $form = $("<form method='post' action='" + url + "'></form>");
630
+ metadataInput = "<input name='_method' value='" + method + "' type='hidden' />";
631
+ if (u.isDefined(csrfParam) && u.isDefined(csrfToken)) {
632
+ metadataInput += "<input name='" + csrfParam + "' value='" + csrfToken + "' type='hidden' />";
633
+ }
634
+ if (target) {
635
+ $form.attr('target', target);
636
+ }
637
+ $form.hide().append(metadataInput).appendTo('body');
638
+ return $form.submit();
639
+ } else {
640
+ return error("Can't fake a " + (method.toUpperCase()) + " request without Rails UJS");
641
+ }
642
+ };
556
643
  url = function() {
557
644
  return location.href;
558
645
  };
646
+ ensureConsoleExists = function() {
647
+ var _base;
648
+ window.console || (window.console = {});
649
+ return (_base = window.console).log || (_base.log = function() {});
650
+ };
651
+ memoize = function(func) {
652
+ var cache, cached;
653
+ cache = void 0;
654
+ cached = false;
655
+ return function() {
656
+ var args;
657
+ args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
658
+ if (cached) {
659
+ return cache;
660
+ } else {
661
+ cached = true;
662
+ return cache = func.apply(null, args);
663
+ }
664
+ };
665
+ };
666
+ canPushState = memoize(function() {
667
+ return u.isDefined(history.pushState);
668
+ });
669
+ canCssAnimation = memoize(function() {
670
+ return 'transition' in document.documentElement.style;
671
+ });
672
+ isSupported = memoize(function() {
673
+ return u.isDefined(document.addEventListener);
674
+ });
559
675
  return {
560
- url: url
676
+ url: url,
677
+ ensureConsoleExists: ensureConsoleExists,
678
+ loadPage: loadPage,
679
+ canPushState: canPushState,
680
+ canCssAnimation: canCssAnimation,
681
+ isSupported: isSupported
561
682
  };
562
683
  })();
563
684
 
@@ -720,6 +841,7 @@ We need to work on this page:
720
841
  @param {String} url
721
842
  The URL to fetch from the server.
722
843
  @param {String} [options.title]
844
+ @param {String} [options.method='get']
723
845
  @param {String|Boolean} [options.history=true]
724
846
  If a `String` is given, it is used as the URL the browser's location bar and history.
725
847
  If omitted or true, the `url` argument will be used.
@@ -732,10 +854,14 @@ We need to work on this page:
732
854
  var selector;
733
855
  options = u.options(options);
734
856
  selector = u.presence(selectorOrElement) ? selectorOrElement : u.createSelectorFromElement($(selectorOrElement));
857
+ if (!up.browser.canPushState() && !u.castsToFalse(options.history)) {
858
+ up.browser.loadPage(url, u.only(options, 'method'));
859
+ return;
860
+ }
735
861
  return u.ajax({
736
862
  url: url,
737
863
  selector: selector
738
- }).done(function(html, textStatus, xhr) {
864
+ }, u.only(options, 'method')).done(function(html, textStatus, xhr) {
739
865
  var currentLocation;
740
866
  if (currentLocation = u.locationFromXhr(xhr)) {
741
867
  url = currentLocation;
@@ -778,7 +904,7 @@ We need to work on this page:
778
904
  _results = [];
779
905
  for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
780
906
  step = _ref1[_i];
781
- $old = u.presence($(".up-popup " + step.selector)) || u.presence($(".up-modal " + step.selector)) || u.presence($(step.selector));
907
+ $old = u.presence($(".up-popup " + step.selector)) || u.presence($(".up-modal " + step.selector)) || u.presence($(step.selector)) || u.error("Could not find selector (" + step.selector + ") in current body HTML");
782
908
  if (fragment = htmlElement.querySelector(step.selector)) {
783
909
  $new = $(fragment);
784
910
  _results.push(swapElements($old, $new, step.pseudoClass, step.transition, options));
@@ -981,6 +1107,9 @@ We need to work on this page:
981
1107
  defaultLiveDescriptions = null;
982
1108
  live = function(events, selector, behavior) {
983
1109
  var description, _ref;
1110
+ if (!up.browser.isSupported()) {
1111
+ return;
1112
+ }
984
1113
  description = [
985
1114
  events, selector, function(event) {
986
1115
  return behavior.apply(this, [event, $(this)]);
@@ -1014,6 +1143,9 @@ We need to work on this page:
1014
1143
  awaken = function() {
1015
1144
  var args, awakener, options, selector;
1016
1145
  selector = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
1146
+ if (!up.browser.isSupported()) {
1147
+ return;
1148
+ }
1017
1149
  awakener = args.pop();
1018
1150
  options = u.options(args[0], {
1019
1151
  batch: false
@@ -1194,10 +1326,14 @@ We need to work on this page:
1194
1326
  }
1195
1327
  };
1196
1328
  manipulate = function(method, url) {
1197
- method += "State";
1198
- return window.history[method]({
1199
- fromUp: true
1200
- }, '', url);
1329
+ if (up.browser.canPushState()) {
1330
+ method += "State";
1331
+ return window.history[method]({
1332
+ fromUp: true
1333
+ }, '', url);
1334
+ } else {
1335
+ return u.error("This browser doesn't support history.pushState");
1336
+ }
1201
1337
  };
1202
1338
  pop = function(event) {
1203
1339
  var state;
@@ -1212,12 +1348,14 @@ We need to work on this page:
1212
1348
  return console.log("strange state", state);
1213
1349
  }
1214
1350
  };
1215
- setTimeout((function() {
1216
- $(window).on("popstate", pop);
1217
- return replace(up.browser.url(), {
1218
- force: true
1219
- });
1220
- }), 200);
1351
+ if (up.browser.canPushState()) {
1352
+ setTimeout((function() {
1353
+ $(window).on("popstate", pop);
1354
+ return replace(up.browser.url(), {
1355
+ force: true
1356
+ });
1357
+ }), 200);
1358
+ }
1221
1359
  return {
1222
1360
  push: push,
1223
1361
  replace: replace
@@ -1380,25 +1518,29 @@ We need to work on this page:
1380
1518
  */
1381
1519
  morph = function(source, target, transitionOrName, options) {
1382
1520
  var $new, $old, animation, parts, transition;
1383
- options = u.options(config);
1384
- $old = $(source);
1385
- $new = $(target);
1386
- transition = u.presence(transitionOrName, u.isFunction) || transitions[transitionOrName];
1387
- if (transition) {
1388
- return withGhosts($old, $new, function($oldGhost, $newGhost) {
1389
- return assertIsPromise(transition($oldGhost, $newGhost, options), ["Transition did not return a promise", transitionOrName]);
1390
- });
1391
- } else if (animation = animations[transitionOrName]) {
1392
- $old.hide();
1393
- return animate($new, animation, options);
1394
- } else if (u.isString(transitionOrName) && transitionOrName.indexOf('/') >= 0) {
1395
- parts = transitionOrName.split('/');
1396
- transition = function($old, $new, options) {
1397
- return $.when(animate($old, parts[0], options), animate($new, parts[1], options));
1398
- };
1399
- return morph($old, $new, transition, options);
1521
+ if (up.browser.canCssAnimation()) {
1522
+ options = u.options(config);
1523
+ $old = $(source);
1524
+ $new = $(target);
1525
+ transition = u.presence(transitionOrName, u.isFunction) || transitions[transitionOrName];
1526
+ if (transition) {
1527
+ return withGhosts($old, $new, function($oldGhost, $newGhost) {
1528
+ return assertIsPromise(transition($oldGhost, $newGhost, options), ["Transition did not return a promise", transitionOrName]);
1529
+ });
1530
+ } else if (animation = animations[transitionOrName]) {
1531
+ $old.hide();
1532
+ return animate($new, animation, options);
1533
+ } else if (u.isString(transitionOrName) && transitionOrName.indexOf('/') >= 0) {
1534
+ parts = transitionOrName.split('/');
1535
+ transition = function($old, $new, options) {
1536
+ return $.when(animate($old, parts[0], options), animate($new, parts[1], options));
1537
+ };
1538
+ return morph($old, $new, transition, options);
1539
+ } else {
1540
+ return u.error("Unknown transition: " + transitionOrName);
1541
+ }
1400
1542
  } else {
1401
- return u.error("Unknown transition: " + transitionOrName);
1543
+ return u.resolvedPromise();
1402
1544
  }
1403
1545
  };
1404
1546
 
@@ -1440,12 +1582,7 @@ We need to work on this page:
1440
1582
  @return {Promise}
1441
1583
  A resolved promise
1442
1584
  */
1443
- none = function() {
1444
- var deferred;
1445
- deferred = $.Deferred();
1446
- deferred.resolve();
1447
- return deferred.promise();
1448
- };
1585
+ none = u.resolvedPromise;
1449
1586
  animation('none', none);
1450
1587
  animation('fade-in', function($ghost, options) {
1451
1588
  $ghost.css({
@@ -1875,6 +2012,10 @@ We need to work on this page:
1875
2012
  httpMethod = u.option(options.method, $form.attr('up-method'), $form.attr('data-method'), $form.attr('method'), 'post').toUpperCase();
1876
2013
  url = u.option(options.url, $form.attr('action'), up.browser.url());
1877
2014
  $form.addClass('up-active');
2015
+ if (!up.browser.canPushState() && !u.castsToFalse(historyOption)) {
2016
+ $form.get(0).submit();
2017
+ return;
2018
+ }
1878
2019
  request = {
1879
2020
  url: url,
1880
2021
  type: httpMethod,
@@ -2180,7 +2321,7 @@ We need to work on this page:
2180
2321
  origin = u.option(options.origin, $link.attr('up-origin'), config.origin);
2181
2322
  animation = u.option(options.animation, $link.attr('up-animation'), config.openAnimation);
2182
2323
  sticky = u.option(options.sticky, $link.is('[up-sticky]'));
2183
- history = u.option(options.history, $link.attr('up-history'), false);
2324
+ history = up.browser.canPushState() ? u.option(options.history, $link.attr('up-history'), false) : false;
2184
2325
  close();
2185
2326
  $popup = createHiddenPopup($link, selector, sticky);
2186
2327
  return up.replace(selector, url, {
@@ -2404,7 +2545,7 @@ We need to work on this page:
2404
2545
  height = u.option(options.height, $link.attr('up-height'), config.height);
2405
2546
  animation = u.option(options.animation, $link.attr('up-animation'), config.openAnimation);
2406
2547
  sticky = u.option(options.sticky, $link.is('[up-sticky]'));
2407
- history = u.option(options.history, $link.attr('up-history'), true);
2548
+ history = up.browser.canPushState() ? u.option(options.history, $link.attr('up-history'), true) : false;
2408
2549
  close();
2409
2550
  $modal = createHiddenModal(selector, width, height, sticky);
2410
2551
  return up.replace(selector, url, {
@@ -2740,12 +2881,13 @@ TODO: Write some documentation
2740
2881
 
2741
2882
  (function() {
2742
2883
  up.marker = (function() {
2743
- var check, hasContent;
2884
+ var check, hasContent, u;
2885
+ u = up.util;
2744
2886
  hasContent = function($marker) {
2745
- return $marker.html().trim() !== '';
2887
+ return u.trim($marker.html()) !== '';
2746
2888
  };
2747
2889
  check = function($element) {
2748
- return up.util.findWithSelf($element, '[up-marker]').each(function() {
2890
+ return u.findWithSelf($element, '[up-marker]').each(function() {
2749
2891
  var $marker;
2750
2892
  $marker = $(this);
2751
2893
  if (!hasContent($marker)) {
@@ -2773,10 +2915,12 @@ TODO: Write some documentation
2773
2915
 
2774
2916
  }).call(this);
2775
2917
  (function() {
2776
- up.bus.emit('framework:ready');
2777
-
2778
- $(document).on('ready', function() {
2779
- return up.bus.emit('app:ready');
2780
- });
2918
+ if (up.browser.isSupported()) {
2919
+ up.browser.ensureConsoleExists();
2920
+ up.bus.emit('framework:ready');
2921
+ $(document).on('ready', function() {
2922
+ return up.bus.emit('app:ready');
2923
+ });
2924
+ }
2781
2925
 
2782
2926
  }).call(this);