simplr-smoothscroll icon indicating copy to clipboard operation
simplr-smoothscroll copied to clipboard

Not functional under jquery 1.11.0

Open tylerslater-io opened this issue 10 years ago • 5 comments
trafficstars

Does not function with Jquery version 1.11.0. Throws error "Uncaught TypeError: Cannot read property 'webkit' of undefined" Under line 25 on the simplr.smoothscroll.js:

body = $.browser.webkit ? $('body') : $('html'),

tylerslater-io avatar Jan 02 '15 07:01 tylerslater-io

So I fixed it but I've actually never contributed to anything. Can I get some help with the process behind that?

tylerslater-io avatar Jan 02 '15 07:01 tylerslater-io

Just paste your fix here, wrap it with triple ` symbol (the one before the 1 key on your keyboard)

simov avatar Jan 02 '15 08:01 simov

var isWebkit = (window.webkitURL != null); is added before the declaration of the win variable and then I put this variable in for $.browser.webkit body = isWebkit ? $('body') : $('html'),

tylerslater-io avatar Jan 02 '15 08:01 tylerslater-io

I haven't gotten a chance to fully test it in other webkit browsers or on linux however.

tylerslater-io avatar Jan 02 '15 08:01 tylerslater-io

That seems unreliable to me. I think about something like this

var isWetKit = ($.browser && $.browser.webkit) || (navigator.userAgent.indexOf('WebKit') != -1)

Here is what I digged out of jQuery's 1.8 source code

// Limit scope pollution from any deprecated API
(function() {

var matched, browser;

// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
jQuery.uaMatch = function( ua ) {
  ua = ua.toLowerCase();

  var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
    /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
    /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
    /(msie) ([\w.]+)/.exec( ua ) ||
    ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
    [];

  return {
    browser: match[ 1 ] || "",
    version: match[ 2 ] || "0"
  };
};

matched = jQuery.uaMatch( navigator.userAgent );
browser = {};

if ( matched.browser ) {
  browser[ matched.browser ] = true;
  browser.version = matched.version;
}

// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
  browser.webkit = true;
} else if ( browser.webkit ) {
  browser.safari = true;
}

jQuery.browser = browser;

simov avatar Jan 02 '15 08:01 simov