Ugh, i just found something that i hoped died in the 90ies:
A website with a custom mouse cursor. And not just some script kiddies private homepage:
https://pg.asrock.com/mb/
kentonline.co.uk##.qc-cmp-cleanslate.css-185jk1u
kentonline.co.uk###meterNagBG
nag 1 (năg)
1. To annoy by constant scolding, complaining, or urging.
2. To torment persistently, as with anxiety or pain.
v.intr.
1. To scold, complain, or find fault constantly: nagging at the children.
2. To be a constant source of anxiety or annoyance: The half-remembered
||kentonline.co.uk/manifest.json
||kentonline.co.uk/_resources/nag-panel-v6729641.css
||kentonline.co.uk/_resources/Article-v6974705.css
||kentonline.co.uk/_resources/image-gallery-v5674213.css
||kentonline.co.uk/_site/bundle-v7145813.css
||kentonline.co.uk/_resources/font-awesome-svg-5.10.2-v5099857.css
||www.kentonline.co.uk/panels/newsletter-kol$subdocument,domain=www.kentonline.co.ukb
The worst is web pages that blocks adblocker only to have 80% or more page area covered with flashing ads (I'm looking at you Daily Mail)._
APRIL 25, 2022/ #USER EXPERIENCE
Skeleton Loader Example – How to Build a Skeleton Screen with CSS for Better UX
Israel Mitolu
They let the user know that some content is loading and, more importantly, provide an indication of what is loading, whether it's an image, text, card, and so on...
This gives the user the impression that the website is faster because they already know what type of content is loading before it appears. This is referred to as perceived performance.
As much as we developers want our websites to load as quickly as possible, there are times when a lot of data needs to be rendered on the page, so Skeleton screens are a great option.
Things to keep in mind
* While implementing skeleton screens, we should keep in mind the goal we are trying achieve with the website or app, and prioritize loading the content.
A skeleton screen is an animated placeholder that simulates the layout of a website while data is being loaded.
Why Use Skeleton Screens?
They appear to be faster and are more user friendly. * Improved perceived performance * provides both good UX and helps in increasing conversion rate.
When to use them
* Use to notify the user that something is loading when more than one element is loading at the same time.
** Use when loading data takes more than 3 seconds.
*** Use on websites with a lot of traffic.
****Use for a background or long-running process.
Conclusion
You made it all the way to the end! You've learned about skeleton loading, and how it contributes to user experience by * creating the illusion of speed when loading data, and you've implemented your own.
I hope you found this tutorial useful and that it serves as a good starting point for creating various skeleton loading screens.
If you found this article insightful, do share it with your friends and network. Also, feel free to connect with me on Twitter and my blog where I share resources and articles* to make you a better dev.
I write web apps a lot of the time. I have done since the web appeared in the 1990s.
* I have seen a massive decline in front end quality in the last decade and you know why?
Sometimes stuff is actually just done and people have a fear of that. Once it's done they're of no value.
Thus the "never done" attitude is what happens. Thus what do you do to something that is done? Shovel more features into it. Next thing you know your web site looks like an Indian train, except less useful.
"Welcome to the Amazon accessibility line. This line is dedicated to the support our customers with disabilities. Is this doesn't apply to you can get in contact with us by visiting www.amazon.co.uk/contactus or by selecting the customer services option from the main menu in the Amazon APP dot just to let you know..."
images-eu.ssl-images-amazon.com/images/I/41k9TQrnHzL.js
Isn't that path suppose to be for graphics and images?
(function(k){var p=window.AmazonUIPageJS||window.P,q=p._namespace||p.attributeErrors,c=q?q("AmazonRushFramework","AmazonRush"):p;c.guardFatal?c.guardFatal(k)(c,window):c.execute(function(){k(c,window)})})(function(k,p,q){k.when("a-ajax","a-util","3p-promise","rush-asset-loader","rush-util","rush-metrics-adapter","rush-dispatcher").register("rush-ajax-controller",function(c,g,e,h,b,f,a){function d(a,d){if(!a)throw Error(d);}function u(){}function l(b,c){var f=b[0];b=b[1]||{};d(v(f),"`dispatch` chunk must have a name");
a.trigger(f,{data:b,memo:c});return e.resolve({name:f,payload:b,memo:c})}function r(a,d,b){var c=a[0];if("title"===c)document.title=a[1];else if("dispatch"===c){var f=l(a.slice(1),b);f.then(function(a){d(a.name,a.payload,a.memo)})}else d(a,b),f=e.resolve();return f}var m=g.extend,x=b.isFunction,v=b.isNotBlank;return function(a,b){var f=[];var g=b&&b.success||u;var l=b&&b.error||u;var n=b&&b.chunk||u;d(x(g),"`success` must be a function");d(x(l),"`error` must be a function");d(x(n),"`chunk` must be a function");
return new e(function(d,w){b=m({memo:null,headers:{}},b);b.success=function(a,b,c){e.all(f).then(function(){g(a,b,c);d({response:a,statusText:b,xhr:c})})["catch"](function(a){l(c,b,a);w({xhr:c,statusText:b,error:a})})};b.error=function(a,b,d){l(a,b,d);w({xhr:a,statusText:b,error:d})};b.chunk=function(a){f.push(r(a,n,b.memo))};b.headers=m(b.headers||{},{"x-amazon-rush-fingerprints":h.fingerprints()});c.ajax(a,b)})}});"use strict";k.when("A","R","rush-util","rush-controller-api","rush-dom","rush-page-state-dispatcher").register("rush-application-api",
function(c,g,e,h,b,f){return function(a,d){var u=document.body,g=null;if(!e.isNotBlank(d)||!a)throw Error("[invalid arguments] valid signature is (application:R.ApplicationBase, applicationAttribution:String)");d=c.trim(d);g=h(d);return c.extend(g,{setupComponents:function(a){b.scan(a||u)},teardownComponents:function(a){b.unscan(a||u)},addRoute:function(b,d){a.addRoute(b,function(){try{return d.apply(null,arguments)}catch(x){g.log.fatal(x,"[pattern\x3d"+b+"]: "+g.log.getErrorMessage(x))}})},startPageStateDispatcher:f.start})}});
"use strict";k.when("rush-controller-api","rush-logger","rush-util").register("rush-application-public-api",function(c,g,e){return function(h,b){if(!e.isNotBlank(h)||!e.isNotBlank(b))throw Error("[invalid arguments] valid signature is (appName:String, attribution:String)");return{getAttribution:function(){return b},getName:function(){return h},onStart:function(){},onStop:function(){},attachController:function(b,a){try{return a(c(b))}catch(d){g.logError(b,"error in the controller handler",d)}}}}});
"use strict";k.when("A","rush-ajax-controller","rush-dispatcher","rush-attributed-error-logger","rush-util").register("rush-controller-api",function(c,g,e,h,b){return function(c){var a=h.create(c);return{ajax:g,on:function(b,c){return e.on(b,function(){try{return c.apply(null,arguments)}catch(l){a.fatal(l,"[event\x3d"+b+"]: "+a.getErrorMessage(l))}})},trigger:e.trigger,log:a,util:b,logError:function(d,c){b.isNullOrUndefined(c)&&d instanceof Error&&(c=d,d=a.getErrorMessage(c));a.fatal(c,d)}}}});"use strict";
k.when("A","rush-dom","rush-dispatcher","rush-attributed-error-logger","rush-util").register("rush-component-api",function(c,g,e,h,b){return function(c,a){var d=h.create(a);return{on:function(a,b){return e.on(a,function(){try{return b.apply(null,arguments)}catch(r){d.fatal(r,"[component\x3d"+c+"][event\x3d"+a+"]: "+d.getErrorMessage(r))}})},trigger:e.trigger,teardown:function(){},remove:g.remove,append:g.append,insertBefore:g.insertBefore,insertAfter:g.insertAfter,replace:g.replace,removeChildren:g.removeChildren,
replaceInnerHTML:g.replaceInnerHTML,util:b,log:d,logError:function(a,f){b.isNullOrUndefined(f)&&a instanceof Error&&(f=a,a=d.getErrorMessage(f));d.fatal(f,"[component\x3d"+c+"]: "+a)}}}});"use strict";k.when("A").register("rush-component-properties",function(c){return function(g){function e(){f=(f=g.getAttribute("data-component-props"))?c.parseJSON(f):{}}function h(a){throw Error("Component properties ."+a+"() is DEPRECATED.");}var b=g.getAttribute?q:null,f=g.getAttribute?q:{};return{elem:function(){return g},
type:function(){b===q&&(b=g.getAttribute("data-component-type"));return b},prop:function(a){f===q&&e();return f[a]},propKeys:function(){f===q&&e();return c.keys(f)},id:function(){h("id")},key:function(){h("key")},parent:function(){h("parent")},children:function(){h("children")}}}});"use strict";k.when("A","rush-component-properties","rush-util","rush-product-ui-component-modifier").register("rush-dom",function(c,g,e,h){function b(a){return!(!a.hasAttribute||!a.hasAttribute("data-component-id"))}function f(a){return!(!a||
1!==a.nodeType)}function a(a){for(var b=a.length;b--;){var d=a[b];if(!d||!d.nodeType)return!1}return!0}function d(a){return"string"===typeof a}function u(a){var b=a.getAttribute&&a.getAttribute("data-component-type");if(!b)return[];a=h.getComponentType(a,b);return a===b?[b]:[a,b]}function l(a,b){var d=null;k.now.apply(k,b).execute(function(){var b,c;for(c=0;c<arguments.length&&((b=arguments[c])&&(d=new b(g(a))),!d);c++);});return d}function r(a,b){var d;a:{var c;for(c=0;c<b.length;c++)if(d=B[b[c]]){d=
d(g(a));break a}d=void 0}if(b=d||l(a,b))return d=A++,a.setAttribute&&a.setAttribute("data-component-id",d),p[d]=b}function m(d){var e=[],h,g;if(C){d=c.isArray(d)?d:[d];if(!a(d))throw Error("[invalid arguments] valid signature is scan(elements:Node|Array\x3cNode\x3e)");d=c.filter(d,function(a){return f(a)});c.each(d,function(a){a.hasAttribute&&a.hasAttribute("data-component-type")&&!b(a)&&e.push(a);e=e.concat(n(a).find("[data-component-type]").filter(":not([data-component-id])").get())});var w=0;for(g=
e.length;w<g;w++)d=e[w],(h=u(d))&&0!==h.length&&(b(d)||r(d,h))}}function x(d){c.isArray(d)||(d=[d]);if(!a(d))throw Error("[invalid arguments] valid signature is unscan(elements:Node|Array\x3cNode\x3e)");d=c.filter(d,function(a){return f(a)});c.each(d,function(a){var d=n(a),c=[];b(a)&&c.push(a);c=c.concat(d.find("[data-component-id]").get());for(a=c.length;a--;){d=c[a];var f=d.getAttribute("data-component-id");var e=p[f];delete p[f];(f=e)&&t(f.teardown)&&f.teardown();d.removeAttribute&&d.removeAttribute("data-component-id")}})}
function v(a,b){if(!f(a)||!d(b))throw Error("[invalid arguments] valid signature is append(parentElem:Node.ELEMENT_NODE, appendingContent:String)");e.isBlank(b)||(a=n(a),b=n(b),a.append(b),m(b.get()))}function y(a){if(!f(a))throw Error("[invalid arguments] valid signature is removeChildren(parentElem:Node.ELEMENT_NODE)");a=n(a);x(a.children().get());a.empty()}var n=c.$,t=n.isFunction,A=1,p={},B={},C=!0;return{scan:m,scanFor:function(d,g){var l=h.getDeclaredComponentType(g),m='[data-component-type\x3d"'+
l+'"]',w=[],z;d=c.isArray(d)?d:[d];if(!a(d))throw Error("`elements` must be either an element or a list of elements.");if(e.isBlank(l))throw Error("`componentName` must be a non-empty string.");d=c.filter(d,function(a){return f(a)});c.each(d,function(a){(a.getAttribute&&a.getAttribute("data-component-type"))!==l||b(a)||w.push(a);w=w.concat(n(a).find(m).filter(":not([data-component-id])").get())});g=0;for(z=w.length;g<z;g++)d=w[g],b(d)||r(d,u(d))},disableScanning:function(){C=!1},enableScanning:function(){C=
!0},unscan:x,remove:function(a){if(!f(a))throw Error("[invalid arguments] valid signature is remove(elem:Node.ELEMENT_NODE)");a.parentNode&&(x(a),a.parentNode.removeChild(a))},append:v,insertBefore:function(a,b){if(!f(a)||!d(b))throw Error("[invalid arguments] valid signature is insertBefore(target:Node.ELEMENT_NODE, newContent:String)");e.isBlank(b)||(b=n(b),n(a).before(b),m(b.get()))},insertAfter:function(a,b){if(!f(a)||!d(b))throw Error("[invalid arguments] valid signature is insertBefore(target:Node.ELEMENT_NODE, newContent:String)");
e.isBlank(b)||(b=n(b),n(a).after(b),m(b.get()))},replace:function(a,b){if(!f(a)||!d(b))throw Error("[invalid arguments] valid signature is replace(oldElem:Node.ELEMENT_NODE, newContent:String)");var c=n(a);e.isNotBlank(b)&&(b=n(b),c.after(b),m(b.get()));x(a);c.remove()},removeChildren:y,replaceInnerHTML:function(a,b){if(!f(a)||!d(b))throw Error("[invalid arguments] valid signature is replaceInnerHTML(parentElem:Node.ELEMENT_NODE, newInnerContent:String)");y(a);v(a,b)},registerComponent:function(a,
b){if(e.isBlank(a))throw Error("A non-empty component name is required for registerComponent(name:String, callback:function)");if(!t(b))throw Error("A component callback function is required for registerComponent(name:String, callback:function)");a=c.trim(a);if(B[a])throw Error("Component has already been registered: "+a);B[a]=b},getRegisteredComponents:q}});k.register("rush-product-ui-component-modifier",function(){function c(a){var b;if(a){var c=document.getElementsByTagName("script");for(b=c.length;b--;){var f=
c[b];if("product-ui/weblabs"===(f.getAttribute&&f.getAttribute("type"))&&(f.getAttribute&&f.getAttribute("data-render-id"))===a)return f}}}function g(a){a=(a=c(a))&&a.innerHTML;if(!a)return{};try{return JSON.parse(a)}catch(d){return k.log("Error parsing weblab treatment JSON: "+d.message,"WARN","rush-product-ui-component-modifier"),{}}}function e(a){var b=[],c;if("object"===typeof a)for(c in a)a.hasOwnProperty(c)&&b.push("weblab\x3d"+c.toLowerCase()+"\x3d"+a[c].toLowerCase());return b}function h(a,
b){a=a.slice().sort();b=b.slice().sort();var d=a.shift(),c;for(c=0;c<b.length&&d;c++)for(;b[c]===d;)d=a.shift();return!d}var b={},f={};return{getComponentType:function(a,d){var c=a.getAttribute&&a.getAttribute("data-version-id");a=a.getAttribute&&a.getAttribute("data-render-id");var l=b[a];l?a=l:(l=g(a),l=e(l),a=b[a]=l);a:if(c=c||"",c=f[c]&&f[c][d]){a.sort();for(r in c)if(c.hasOwnProperty(r)&&h(c[r],a))break a;var r=void 0}else r=q;return r||d},getDeclaredComponentType:function(a){return a.split("?",
1)[0]},gateFramework:function(a,b,c){var d=a.registerComponent;a.registerComponent=function(a,e,g){var h=b;if(h||0!==c.length){var m=h=h||"";var n=a,l=[].concat(c||[]);m&&l.push("versionId\x3d"+m);0<l.length&&(n+="?"+l.sort().join("\x26"));m=n;f[h]=f[h]||{};f[h][a]=f[h][a]||{};f[h][a][m]=c;a=m}return d(a,e,g)};return a},getWeblabScriptBlock:c,getTreatmentsForRenderId:g,getWeblabFlagsForTreatments:e,flagsMatch:h,getComponentMap:function(){return f}}});k.when("jQuery","rush-util","rush-attributed-error-logger").register("rush-dispatcher",
function(c,g,e){function h(){}function b(a,b){return function(){var d=a.indexOf(b);-1!==d&&(a[d]=h)}}var f=e.create("rush-dispatcher"),a=g.assert,d=g.isNotBlank,u=c.isFunction,l=c.trim,k={};return{trigger:function(b,c){var h=0,e;a(d(b),"must provide an event name");b=l(b);for(e=k[b]||[];h<e.length;){try{e[h](c)}catch(n){f.error(n,"A handler for event `"+b+"` failed to execute")}h++}},on:function(c,f){a(d(c),"must provide an event name");a(u(f),"must provide an event callback function");k[c]=k[c]||
[];c=k[c];c.push(f);return b(c,f)}}});"use strict";k.when("A","rush-dispatcher","rush-util").register("rush-page-state-dispatcher",function(c,g,e){function h(b,f){b=b||{};f=f||{};c.each(b,function(b,d){if(!0===f||!0===f[d]){b=[].concat(b);for(var c=0,h=b.length;c<h;c++)g.trigger(d,{data:[b[c]],memo:a})}})}var b=e.isObject,f=!1,a;return{start:function(d){f||(f=!0,d=d||{},b(d)&&(d.dispatchedByRushPageStateDispatcher=!0),a=d,d=c.state("rush-dispatch"),h(d,!0),c.state.bind("rush-dispatch",h))},isDispatchedByPageState:function(b){return b&&
b.memo===a}}});k.when("rush-error-logger").register("rush-attributed-error-logger",function(c){return{create:function(g){return{getErrorMessage:c.getErrorMessage,fatal:function(e,h){c.fatal(e,h,g)},error:function(e,h){c.error(e,h,g)},warn:function(e,h){c.warn(e,h,g)},logErrorWrapper:function(e,h,b){return c.logErrorWrapper(e,h,g,b)}}}}});k.register("rush-console-logger",function(){function c(c){return function(){}}function g(){console&&console.log&&console.log.apply(console,arguments)}return{log:c(g),
warn:c(function(){console&&console.warn?console.warn.apply(console,arguments):g.apply(null,arguments)}),error:c(function(){console&&console.error?console.error.apply(console,arguments):g.apply(null,arguments)})}});k.when("rush-console-logger").register("rush-error-logger",function(c){function g(h,b,f,a){b={message:b,logLevel:f,attribution:a};c.log(b);if(h)switch(f){case "FATAL":case "ERROR":c.error(h);break;case "WARN":c.warn(h);break;default:c.log(h)}p.ueLogError&&p.ueLogError(h,b)}var e={fatal:function(c,
b,f){g(c,b,"FATAL",f)},error:function(c,b,f){g(c,b,"ERROR",f)},warn:function(c,b,f){g(c,b,"WARN",f)},logError:function(c,b,f){e.fatal(f,b,c)},getErrorMessage:function(c){try{return c instanceof Error?c.message:JSON.stringify(c)}catch(b){return"could not get the error message"}},logErrorWrapper:function(c,b,f,a){return function(){try{return c.apply(b,arguments)}catch(d){a||(a=e.getErrorMessage(d)),e.fatal(d,a,f)}}}};return e});k.when("rush-error-logger").register("rush-logger",function(c){return c});
"use strict";k.when("A","R","rush-dom","rush-util","rush-logger","rush-component-api","rush-application-api","rush-application-public-api").register("rush-framework",function(c,g,e,h,b,f,a,d){function k(){!1===v&&(v=!0,m=m.concat(p),p=[],y())}var l=c.$.isFunction,r=c.$.proxy,m=[],p=[],v=!1,y=function(){var a=c.throttle(function(){var a=0;var b=m.length;if(3<=b)e.scan(document.body);else for(;a<b;a++)e.scanFor(document.body,m[a]);m=[]},25);return function(){m.length&&a()}}();return{attachApp:function(b,
f,e,k){var n=!1,A=[];if(!h.isNotBlank(b)||!h.isNotBlank(f)||!l(e))throw Error("[invalid arguments] valid signature is attachApp(appName:String, attribution:String, handler:function(api:RushApplicationAPI))");b=c.trim(b);f=c.trim(f);var m=new g.ApplicationBase(b);k=c.extend({alternativeUrl:q},k);m.addRoute=function(){var a=Array.prototype.slice.call(arguments);n?g.addRoute.apply(g,a):A.push(a)};var u=a(m,f);b=d(b,f);b=c.extend(b,e(u));m.load=r(b.onStart,b);m.unload=r(b.onStop,b);n=!0;c.each(A,function(a){g.addRoute.apply(g,
a)});g.start(k.alternativeUrl);return b},registerComponent:function(a,b,d){if(h.isBlank(a))throw Error("A non-empty component name is required for registerComponent(componentName:String, componentAttribution:String, componentSetup:function).");if(h.isBlank(b))throw Error("A non-empty component attribution is required for registerComponent(componentName:String, componentAttribution:String, componentSetup:function).");if(!l(d))throw Error("A component setup function is required for registerComponent(componentName:String, componentAttribution:String, componentSetup:function).");
e.registerComponent(a,function(e){var g=c.extend(f(a,b),e),h=[],k=g.on;g.on=function(a){var b=k.apply(null,arguments);h.push([a,b]);return b};try{d(g)}catch(z){g.log.fatal(z,'Component setup failure in component "'+a+'".')}return{teardown:function(){c.each(h,function(b){var c=b[0];b=b[1];if(l(b))try{b()}catch(D){g.log.fatal(D,'Component teardown failure in component "'+a+'" during on("'+c+'") teardown.')}});if(l(g.teardown))try{g.teardown()}catch(z){g.log.fatal(z,'Component teardown failure in component "'+
a+'" during the custom component teardown.')}}}});!0===v?(m.push(a),setTimeout(y,0)):p.push(a)},turnOnAutoScanner:k,turnOffAutoScanner:function(){v=!1},enableAllScanning:function(){e.enableScanning();e.scan(document.body);k()},disableAllScanning:function(){e.disableScanning();v=!1}}});"use strict";k.register("rush-metrics-adapter",function(){function c(){}var g=p.uet||c;var e=p.ues||c;var h=p.ue&&p.ue.count||c;var b=p.uex||c;return{setTimer:function(b,a,c,e){g(b,a,c,e)},setValue:function(b,a,c){e(b,
a,c)},setCount:function(b,a,c,e){e=e?e:{};a&&(e.scope=a);h(b,c,e)},incrementCount:function(b,a,c){c=c?c:{};a&&(c.scope=a);a=(h(b,q,c)||0)+1;h(b,a,c)},publish:function(c,a,d){b(c,a,d)}}});"use strict";k.when("rush-metrics-adapter","A").register("rush-metrics",function(c,g){var e={wb:1},h=0;g=g.createClass({_metricsAdapter:q,_isPublished:!1,_scope:q,init:function(a,b){this._scope=(a||"amazonRush").substring(0,26)+h++;this._metricsAdapter=b||c},getMetricsAdapter:function(){return this._metricsAdapter},
isPublished:function(){return this._isPublished},validateIsNotPublished:function(){return this.isPublished()?!1:!0},setTimer:function(a,b,c){this.validateIsNotPublished()?this.getMetricsAdapter().setTimer(a,this._scope,b,c):this.getMetricsAdapter().incrementCount("s-metrics-published-"+a);return this},setValue:function(a,b){this.validateIsNotPublished()&&this.getMetricsAdapter().setValue(a,this._scope,b);return this},setCount:function(a,b){this.validateIsNotPublished()&&this.getMetricsAdapter().setCount(a,
this._scope,b);return this},loadComplete:function(a){this.validateIsNotPublished()&&(this.getMetricsAdapter().publish("ld",this._scope,a),this._isPublished=!0)}});var b=g.extend({_hasRequestId:!1,_hasSecondRequestId:!1,_isLoadWaiting:!1,_loadWaitingOptions:q,init:function(a,b){this._super(a,b);this.clientTimeBased();this.beginRequest()},clientTimeBased:function(){return this.setValue("ctb","1")},beginRequest:function(){return this.setTimer("tc")},beginResponse:function(){return this.setValue("t0",
+new Date)},responseComplete:function(){return this.setTimer("be")},setRequestId:function(a){if(!0!==this._hasRequestId)return a&&this.validateIsNotPublished()&&(this._hasRequestId=!0,this.setValue("id",a),!0===this._isLoadWaiting&&this.loadComplete(this._loadWaitingOptions)),this},setSecondRequestId:function(a){if(!0!==this._hasSecondRequestId)return a&&this.validateIsNotPublished()&&(this._hasSecondRequestId=!0,this.setValue("id2",a)),this},criticalFeatureComplete:function(a){return this.setTimer("cf",
q,a)},aboveTheFoldComplete:function(a){return this.setTimer("af",q,a)},timeClicked:function(a){return this.setTimer("tc",q,a)},functionalComplete:function(a){return this.setTimer("fn",q,a)},counterReady:function(a,b){return this.setCount(a,b)},loadComplete:function(a){!0!==this._hasRequestId?(this._isLoadWaiting=!0,this._loadWaitingOptions=a):this._super(a)}});var f=g.extend({init:function(a,b){this._super(a,b);this.bodyBegin()},setTimer:function(a,b,c){b=b||e;return this._super(a,b,c)},bodyBegin:function(){return this.setTimer("bb")},
criticalFeatureComplete:function(a){return this.setTimer("cf",q,a)},loadComplete:function(a){a=a||e;this._super(a)}});return{newPageTransitionScope:function(a,c){return new b(a,c)},newWidgetScope:function(a,b){return new f(a,b)}}});"use strict";k.when("A","rush-metrics","rush-dispatcher").register("rush-page-transition-metrics",function(c,g,e){function h(a){n=g.newPageTransitionScope(null,a)}function b(){n||h();return n}function f(a){var d=c.$.isArray(a)?a[0].requestId:a.requestId;a=c.$.isArray(a)?
a[0].secondRequestId:a.secondRequestId;d&&b().setRequestId(d);a&&b().setSecondRequestId(a)}function a(){h();b().beginRequest()}function d(){b().beginResponse()}function k(){b().responseComplete()}function l(a){b().criticalFeatureComplete(a.timeOverride)}function p(a){b().aboveTheFoldComplete(a.timeOverride)}function m(a){b().timeClicked(a.timeOverride)}function q(a){b().functionalComplete(a.timeOverride)}function v(a){b().counterReady(a.counter,a.value)}function y(){b().loadComplete()}var n,t={RECEIVED_METRICS_INFO:"rushMetricsEvents:metricsInfo",
BEGIN_REQUEST:"rushMetricsEvents:beginRequest",BEGIN_RESPONSE:"rushMetricsEvents:beginResponse",RESPONSE_COMPLETE:"rushMetricsEvents:responseComplete",CRITICAL_FEATURE_COMPLETE:"rushMetricsEvents:criticalFeatureComplete",ABOVE_THE_FOLD_COMPLETE:"rushMetricsEvents:aboveTheFoldComplete",TIME_CLICKED:"rushMetricsEvents:timeClicked",FUNCTIONAL_COMPLETE:"rushMetricsEvents:functionalComplete",COUNTER_READY:"rushMetricsEvents:counterReady",LOAD_COMPLETE:"rushMetricsEvents:loadComplete"};e.on(t.RECEIVED_METRICS_INFO,
f);e.on(t.BEGIN_REQUEST,a);e.on(t.BEGIN_RESPONSE,d);e.on(t.RESPONSE_COMPLETE,k);e.on(t.CRITICAL_FEATURE_COMPLETE,l);e.on(t.ABOVE_THE_FOLD_COMPLETE,p);e.on(t.TIME_CLICKED,m);e.on(t.FUNCTIONAL_COMPLETE,q);e.on(t.COUNTER_READY,v);e.on(t.LOAD_COMPLETE,y);return{EVENTS:t,createNewPageTransitionScope:h,receivedMetricsInfo:f,beginRequest:a,beginResponse:d,responseComplete:k,criticalFeatureComplete:l,aboveTheFoldComplete:p,timeClicked:m,functionalComplete:q,counterReady:v,loadComplete:y}});"use strict";k.execute("rush-feature-browser-support",
function(){function c(c,h){g&&g.tag&&g.tag("supports:"+c+":"+("function"===typeof h?"true":"false"))}var g=p.ue;c("mutationobserver",p.MutationObserver);c("getelementsbyclassname",document.getElementsByClassName);c("map",p.Map)});"use strict";k.when("rush-ajax-controller","rush-dispatcher","rush-dom","rush-page-transition-metrics","rush-page-state-dispatcher","rush-util").register("Rush",function(c,g,e,h,b,f){return{ajax:c,trigger:g.trigger,on:g.on,startPageStateDispatcher:b.start,isDispatchedByPageState:b.isDispatchedByPageState,
scan:e.scan,unscan:e.unscan,remove:e.remove,removeChildren:e.removeChildren,append:e.append,replace:e.replace,replaceInnerHTML:e.replaceInnerHTML,metrics:{EVENTS:h.EVENTS},util:f}});"use strict";k.when("jQuery","a-util").register("rush-util",function(c,g){var e=g.trim,h={outerHTML:function(b){return b.outerHTML?b.outerHTML:c("\x3cdiv\x3e").append(c(b).clone()).html()},isObject:function(b){return"object"===typeof b&&null!==b},isNumber:function(b){return"number"===typeof b&&isFinite(b)},isNullOrUndefined:function(b){return null===
b||b===q},isNotBlank:function(b){return"string"===typeof b&&""!==e(b)},isBlank:function(b){return!h.isNotBlank(b)},setIfEmpty:function(b,c,a){b[c]===q&&(b[c]=a)},makeComponentId:function(b,c){return h.isNotBlank(b)&&h.isNotBlank(c)?b+":"+c:""},freeze:function(b){return Object.freeze?Object.freeze(b):b},isFunction:c.isFunction,assert:function(b,c){if(!b)throw Error(c);},hide:function(b){c(b).addClass("aok-hidden")},show:function(b){c(b).removeClass("aok-hidden")}};return h.freeze(h)})});
e(function(d,w){b=m({memo:null,headers:{}},b);b.success=function(a,b,c){e.all(f).then(function(){g(a,b,c);d({response:a,statusText:b,xhr:c})})["catch"](function(a){l(c,b,a);w({xhr:c,statusText:b,error:a})})};b.error=function(a,b,d){l(a,b,d);w({xhr:a,statusText:b,error:d})};b.chunk=function(a){f.push(r(a,n,b.memo))};b.headers=m(b.headers||{},{"x-amazon-rush-fingerprints":h.fingerprints()});c.ajax(a,b)})}});"use
this},setCount:function(a,b){this.validateIsNotPublished()&&this.getMetricsAdapter().setCount(a,
this._scope,b);return this},loadComplete:function(a){this.validateIsNotPublished()&&(this.getMetricsAdapter().publish("ld",this._scope,a),this._isPublished=!0)}});var
and set the nav toolbar to spam the users and follow down the page just after the page has finished loading.
ir.ebaystatic.com/cr/v/c1/globalheader_widget_platform__v2-b70676194b.js
Scrollbars are taken away. Disable adblock and a dimming overlay with tiny white dialogue "get £5 off when you purchase in our app!"
This is harassment.
ir.ebaystatic.com/cr/v/c1/globalheader_widget_platform__v2-b70676194b.js
Dimming overlays which suddenly appears hurts my eyes, cutting me off from the background completely is entirely the reason why I won't be using your stupid app as I won't have the browser controls to hide things like this put up with absolutely no regard for the user.
ebay.co.uk##.recs-loader
ebay.com##.recs-loader
##.recs-loader
ebay.co.uk##.recs-module
ebay.com##.recs-module
##.recs-module
ebay.co.uk##.recs-skeleton
ebay.com##.recs-skeleton
##.recs-skeleton
ebay.co.uk##.recs-loading
ebay.com##.recs-loading
##.recs-loading.recs-title
##.recs-loading
##.recs-module
ebay.co.uk##.recs-loading.recs-text-row
ebay.com##.recs-loading.recs-text-row
##.recs-loading.recs-text-row
ebay.co.uk##recs-loading.recs-text-row.recs-section-one
ebay.com##.recs-loading.recs-text-row.recs-section-one
##.recs-loading recs-text-row recs-section-one
ebay.co.uk##.recs-loading.recs-text-row.recs-section-two
ebay.com##.recs-loading.recs-text-row.recs-section-two
##.recs-loading.recs-text-row.recs-section-two
https://ir.ebaystatic.com/cr/v/c1/globalheader_widget_platform__v2-b70676194b.js
I am going to see what happens if can block the path after c1 to try and avoid anymore of that.1. Open the camera app on your phone b*gger *ff I'd never use my phone for that.
2. Scan this code your your phone no way
3. Go to the app store * and the the app. **
4. Start saving More like WASTING time.
Page is fine for about 5 seconds, and then a "Become a dealer" box pops up. Traps user input so the underlying page can't be scrolled, but there is no way to close the popup other than progress to a 'become a dealer' application..