Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

prerenderReady-javascript

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

prerenderReady Introduction

When we use prerender.io, we can use window.prerenderReady to tell prerender.io service, the page is completely loaded. But it requires us to change a lot of existing code, which is a lot effort and not flexible. prerenderReady provides the functionality which helps us

  1. Tracks AJAX call automatically, after all AJAX calls are completed, it will automatically set window.prerenderReady to true.
  2. Provides an easy way to add tracking for setTimeout, so that we don't need to manually set window.prerenderReady. There are two plugins which are built on prerenderReady library, one for jQuery, the other one for angularJS.

install prerenderReady with Nuget

Install-Package DotNetOpen.PrerenderReady

after you have installed PrerenderReady, there are 3 different javascript files.

  1. prerenderio.js prerenderReady library
  2. prerenderAngular1.js prerenderReady module for angularJS
  3. prerenderjQuery.js prerenderReady plugin for jQuery

Once you have added prerenderio.js to your page, it will create a PrerenderIO object for window, you can get this object by

 window.prerender

prerenderReady options

var defaultOptions = {
// maxTimeout for all ajax calls, after this timeout, it will set prerenderReady to true.
// if there is no ajax call, will use this value.
// if maxTimeout is NULL or any value <=0, won't setup timeout.
maxTimeout: 1000,
// noAjaxCheckTimeout for no ajax pages. Since Prerender.io has its min timeout, to improve performance, // we can setup noAjaxCheckTimeout to notify Prerender.io that page is loaded completedly since there is no ajax calls.
// the number depends on your application load time.
noAjaxCheckTimeout:100,
// ajaxCompleteTimeout for single ajax call, after this timeout, it will call complete() method to check whether all ajax calls have been finished, // if yes, then set prerenderReady to true.
// this setting is very useful, especially, when you have ajax call in another ajax call, or you have timeout in your ajax call.
ajaxCompleteTimeout: 10,
// debug = true, will output debug information.
debug: false,
// enable prerender ajax tracking for all ajax calls.
// this setting is useful when you only want to use ajax tracking for some pages.
// by now, we don't support to disable ajax tracking for single ajax call in one page.
enable:true
};

You can configure prerenderReady by calling

window.prerender.config(options)

use in jQuery project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderjQuery.js
  3. For AJAX call, you don't need to add any code, prerenderjQuery will automatically track AJAX call by jQuery ($.ajax, $.get, $.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  4. For setTimeout, the window.prerender object has overwritten window.setTimeout by providing 3rd parameter TRUE/FALSE. If you want to track setTimeout for prerenderReady, just need to give the 3rd parameter to true, i.e.
setTimeout(function () {
$(".ajax-data-container").append("<div> " + new Date() + " Error: " + response.responseText + "</div>");
}, 1000, true);

use in angularJS project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderAngular1.js
  3. Inject prerenderIO module to your app module
var module = angular.module("prerenderExample", ["prerenderIO"]);
  1. For AJAX call, you don't need to add any code, prerenderAngular1 will automatically track AJAX call by angularJS 1.x ($http, $http.get, $http.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  2. For setTimeout, you need to inject prerenderTimeout into your controller or directives, i.e.
 module.controller("prerenderExampleController", ["$http", "$element", "$timeout", "prerenderTimeout", function ($http, $element, $timeout, prerenderTimeout) {
var windowTimeout = 9000;
var aspxTimeout = 2000;
$element.append("<div> " + new Date() + " Start:" + JSON.stringify({ windowTimeout: windowTimeout + " ms", aspxTimeout: aspxTimeout + " ms" }) + "</div>");
$http({
url: "../data.json?t=" + (new Date()),
method: "GET",
responseType:"json"
})
.then(
function (response) {
console.log(12);
var data = angular.extend({}, response.data);
// angular.element doesn't work in controller.
prerenderTimeout(function () {
data.Timeout = windowTimeout + " ms";
$element.append("<div> " + new Date() + " Success: " + JSON.stringify(data) + "</div>");
}, windowTimeout);
},
function (response) {
console.log(13);
$timeout(function () {
$element.append("<div> " + new Date() + " Error: " + response + "</div>");
}, windowTimeout);
}
);
}]);

##Examples

  1. jQuery Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/jQuery
  2. angularJS 1.x Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/angular1

About

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

prerenderReady-javascript

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

prerenderReady Introduction

When we use prerender.io, we can use window.prerenderReady to tell prerender.io service, the page is completely loaded. But it requires us to change a lot of existing code, which is a lot effort and not flexible. prerenderReady provides the functionality which helps us

  1. Tracks AJAX call automatically, after all AJAX calls are completed, it will automatically set window.prerenderReady to true.
  2. Provides an easy way to add tracking for setTimeout, so that we don't need to manually set window.prerenderReady. There are two plugins which are built on prerenderReady library, one for jQuery, the other one for angularJS.

install prerenderReady with Nuget

Install-Package DotNetOpen.PrerenderReady

after you have installed PrerenderReady, there are 3 different javascript files.

  1. prerenderio.js prerenderReady library
  2. prerenderAngular1.js prerenderReady module for angularJS
  3. prerenderjQuery.js prerenderReady plugin for jQuery

Once you have added prerenderio.js to your page, it will create a PrerenderIO object for window, you can get this object by

 window.prerender

prerenderReady options

var defaultOptions = {
// maxTimeout for all ajax calls, after this timeout, it will set prerenderReady to true.
// if there is no ajax call, will use this value.
// if maxTimeout is NULL or any value <=0, won't setup timeout.
maxTimeout: 1000,
// noAjaxCheckTimeout for no ajax pages. Since Prerender.io has its min timeout, to improve performance, // we can setup noAjaxCheckTimeout to notify Prerender.io that page is loaded completedly since there is no ajax calls.
// the number depends on your application load time.
noAjaxCheckTimeout:100,
// ajaxCompleteTimeout for single ajax call, after this timeout, it will call complete() method to check whether all ajax calls have been finished, // if yes, then set prerenderReady to true.
// this setting is very useful, especially, when you have ajax call in another ajax call, or you have timeout in your ajax call.
ajaxCompleteTimeout: 10,
// debug = true, will output debug information.
debug: false,
// enable prerender ajax tracking for all ajax calls.
// this setting is useful when you only want to use ajax tracking for some pages.
// by now, we don't support to disable ajax tracking for single ajax call in one page.
enable:true
};

You can configure prerenderReady by calling

window.prerender.config(options)

use in jQuery project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderjQuery.js
  3. For AJAX call, you don't need to add any code, prerenderjQuery will automatically track AJAX call by jQuery ($.ajax, $.get, $.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  4. For setTimeout, the window.prerender object has overwritten window.setTimeout by providing 3rd parameter TRUE/FALSE. If you want to track setTimeout for prerenderReady, just need to give the 3rd parameter to true, i.e.
setTimeout(function () {
$(".ajax-data-container").append("<div> " + new Date() + " Error: " + response.responseText + "</div>");
}, 1000, true);

use in angularJS project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderAngular1.js
  3. Inject prerenderIO module to your app module
var module = angular.module("prerenderExample", ["prerenderIO"]);
  1. For AJAX call, you don't need to add any code, prerenderAngular1 will automatically track AJAX call by angularJS 1.x ($http, $http.get, $http.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  2. For setTimeout, you need to inject prerenderTimeout into your controller or directives, i.e.
 module.controller("prerenderExampleController", ["$http", "$element", "$timeout", "prerenderTimeout", function ($http, $element, $timeout, prerenderTimeout) {
var windowTimeout = 9000;
var aspxTimeout = 2000;
$element.append("<div> " + new Date() + " Start:" + JSON.stringify({ windowTimeout: windowTimeout + " ms", aspxTimeout: aspxTimeout + " ms" }) + "</div>");
$http({
url: "../data.json?t=" + (new Date()),
method: "GET",
responseType:"json"
})
.then(
function (response) {
console.log(12);
var data = angular.extend({}, response.data);
// angular.element doesn't work in controller.
prerenderTimeout(function () {
data.Timeout = windowTimeout + " ms";
$element.append("<div> " + new Date() + " Success: " + JSON.stringify(data) + "</div>");
}, windowTimeout);
},
function (response) {
console.log(13);
$timeout(function () {
$element.append("<div> " + new Date() + " Error: " + response + "</div>");
}, windowTimeout);
}
);
}]);

##Examples

  1. jQuery Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/jQuery
  2. angularJS 1.x Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/angular1

About

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

prerenderReady-javascript

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

prerenderReady Introduction

When we use prerender.io, we can use window.prerenderReady to tell prerender.io service, the page is completely loaded. But it requires us to change a lot of existing code, which is a lot effort and not flexible. prerenderReady provides the functionality which helps us

  1. Tracks AJAX call automatically, after all AJAX calls are completed, it will automatically set window.prerenderReady to true.
  2. Provides an easy way to add tracking for setTimeout, so that we don't need to manually set window.prerenderReady. There are two plugins which are built on prerenderReady library, one for jQuery, the other one for angularJS.

install prerenderReady with Nuget

Install-Package DotNetOpen.PrerenderReady

after you have installed PrerenderReady, there are 3 different javascript files.

  1. prerenderio.js prerenderReady library
  2. prerenderAngular1.js prerenderReady module for angularJS
  3. prerenderjQuery.js prerenderReady plugin for jQuery

Once you have added prerenderio.js to your page, it will create a PrerenderIO object for window, you can get this object by

 window.prerender

prerenderReady options

var defaultOptions = {
// maxTimeout for all ajax calls, after this timeout, it will set prerenderReady to true.
// if there is no ajax call, will use this value.
// if maxTimeout is NULL or any value <=0, won't setup timeout.
maxTimeout: 1000,
// noAjaxCheckTimeout for no ajax pages. Since Prerender.io has its min timeout, to improve performance, // we can setup noAjaxCheckTimeout to notify Prerender.io that page is loaded completedly since there is no ajax calls.
// the number depends on your application load time.
noAjaxCheckTimeout:100,
// ajaxCompleteTimeout for single ajax call, after this timeout, it will call complete() method to check whether all ajax calls have been finished, // if yes, then set prerenderReady to true.
// this setting is very useful, especially, when you have ajax call in another ajax call, or you have timeout in your ajax call.
ajaxCompleteTimeout: 10,
// debug = true, will output debug information.
debug: false,
// enable prerender ajax tracking for all ajax calls.
// this setting is useful when you only want to use ajax tracking for some pages.
// by now, we don't support to disable ajax tracking for single ajax call in one page.
enable:true
};

You can configure prerenderReady by calling

window.prerender.config(options)

use in jQuery project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderjQuery.js
  3. For AJAX call, you don't need to add any code, prerenderjQuery will automatically track AJAX call by jQuery ($.ajax, $.get, $.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  4. For setTimeout, the window.prerender object has overwritten window.setTimeout by providing 3rd parameter TRUE/FALSE. If you want to track setTimeout for prerenderReady, just need to give the 3rd parameter to true, i.e.
setTimeout(function () {
$(".ajax-data-container").append("<div> " + new Date() + " Error: " + response.responseText + "</div>");
}, 1000, true);

use in angularJS project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderAngular1.js
  3. Inject prerenderIO module to your app module
var module = angular.module("prerenderExample", ["prerenderIO"]);
  1. For AJAX call, you don't need to add any code, prerenderAngular1 will automatically track AJAX call by angularJS 1.x ($http, $http.get, $http.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  2. For setTimeout, you need to inject prerenderTimeout into your controller or directives, i.e.
 module.controller("prerenderExampleController", ["$http", "$element", "$timeout", "prerenderTimeout", function ($http, $element, $timeout, prerenderTimeout) {
var windowTimeout = 9000;
var aspxTimeout = 2000;
$element.append("<div> " + new Date() + " Start:" + JSON.stringify({ windowTimeout: windowTimeout + " ms", aspxTimeout: aspxTimeout + " ms" }) + "</div>");
$http({
url: "../data.json?t=" + (new Date()),
method: "GET",
responseType:"json"
})
.then(
function (response) {
console.log(12);
var data = angular.extend({}, response.data);
// angular.element doesn't work in controller.
prerenderTimeout(function () {
data.Timeout = windowTimeout + " ms";
$element.append("<div> " + new Date() + " Success: " + JSON.stringify(data) + "</div>");
}, windowTimeout);
},
function (response) {
console.log(13);
$timeout(function () {
$element.append("<div> " + new Date() + " Error: " + response + "</div>");
}, windowTimeout);
}
);
}]);

##Examples

  1. jQuery Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/jQuery
  2. angularJS 1.x Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/angular1

About

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

prerenderReady-javascript

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

prerenderReady Introduction

When we use prerender.io, we can use window.prerenderReady to tell prerender.io service, the page is completely loaded. But it requires us to change a lot of existing code, which is a lot effort and not flexible. prerenderReady provides the functionality which helps us

  1. Tracks AJAX call automatically, after all AJAX calls are completed, it will automatically set window.prerenderReady to true.
  2. Provides an easy way to add tracking for setTimeout, so that we don't need to manually set window.prerenderReady. There are two plugins which are built on prerenderReady library, one for jQuery, the other one for angularJS.

install prerenderReady with Nuget

Install-Package DotNetOpen.PrerenderReady

after you have installed PrerenderReady, there are 3 different javascript files.

  1. prerenderio.js prerenderReady library
  2. prerenderAngular1.js prerenderReady module for angularJS
  3. prerenderjQuery.js prerenderReady plugin for jQuery

Once you have added prerenderio.js to your page, it will create a PrerenderIO object for window, you can get this object by

 window.prerender

prerenderReady options

var defaultOptions = {
// maxTimeout for all ajax calls, after this timeout, it will set prerenderReady to true.
// if there is no ajax call, will use this value.
// if maxTimeout is NULL or any value <=0, won't setup timeout.
maxTimeout: 1000,
// noAjaxCheckTimeout for no ajax pages. Since Prerender.io has its min timeout, to improve performance, // we can setup noAjaxCheckTimeout to notify Prerender.io that page is loaded completedly since there is no ajax calls.
// the number depends on your application load time.
noAjaxCheckTimeout:100,
// ajaxCompleteTimeout for single ajax call, after this timeout, it will call complete() method to check whether all ajax calls have been finished, // if yes, then set prerenderReady to true.
// this setting is very useful, especially, when you have ajax call in another ajax call, or you have timeout in your ajax call.
ajaxCompleteTimeout: 10,
// debug = true, will output debug information.
debug: false,
// enable prerender ajax tracking for all ajax calls.
// this setting is useful when you only want to use ajax tracking for some pages.
// by now, we don't support to disable ajax tracking for single ajax call in one page.
enable:true
};

You can configure prerenderReady by calling

window.prerender.config(options)

use in jQuery project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderjQuery.js
  3. For AJAX call, you don't need to add any code, prerenderjQuery will automatically track AJAX call by jQuery ($.ajax, $.get, $.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  4. For setTimeout, the window.prerender object has overwritten window.setTimeout by providing 3rd parameter TRUE/FALSE. If you want to track setTimeout for prerenderReady, just need to give the 3rd parameter to true, i.e.
setTimeout(function () {
$(".ajax-data-container").append("<div> " + new Date() + " Error: " + response.responseText + "</div>");
}, 1000, true);

use in angularJS project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderAngular1.js
  3. Inject prerenderIO module to your app module
var module = angular.module("prerenderExample", ["prerenderIO"]);
  1. For AJAX call, you don't need to add any code, prerenderAngular1 will automatically track AJAX call by angularJS 1.x ($http, $http.get, $http.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  2. For setTimeout, you need to inject prerenderTimeout into your controller or directives, i.e.
 module.controller("prerenderExampleController", ["$http", "$element", "$timeout", "prerenderTimeout", function ($http, $element, $timeout, prerenderTimeout) {
var windowTimeout = 9000;
var aspxTimeout = 2000;
$element.append("<div> " + new Date() + " Start:" + JSON.stringify({ windowTimeout: windowTimeout + " ms", aspxTimeout: aspxTimeout + " ms" }) + "</div>");
$http({
url: "../data.json?t=" + (new Date()),
method: "GET",
responseType:"json"
})
.then(
function (response) {
console.log(12);
var data = angular.extend({}, response.data);
// angular.element doesn't work in controller.
prerenderTimeout(function () {
data.Timeout = windowTimeout + " ms";
$element.append("<div> " + new Date() + " Success: " + JSON.stringify(data) + "</div>");
}, windowTimeout);
},
function (response) {
console.log(13);
$timeout(function () {
$element.append("<div> " + new Date() + " Error: " + response + "</div>");
}, windowTimeout);
}
);
}]);

##Examples

  1. jQuery Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/jQuery
  2. angularJS 1.x Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/angular1

About

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

prerenderReady-javascript

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

prerenderReady Introduction

When we use prerender.io, we can use window.prerenderReady to tell prerender.io service, the page is completely loaded. But it requires us to change a lot of existing code, which is a lot effort and not flexible. prerenderReady provides the functionality which helps us

  1. Tracks AJAX call automatically, after all AJAX calls are completed, it will automatically set window.prerenderReady to true.
  2. Provides an easy way to add tracking for setTimeout, so that we don't need to manually set window.prerenderReady. There are two plugins which are built on prerenderReady library, one for jQuery, the other one for angularJS.

install prerenderReady with Nuget

Install-Package DotNetOpen.PrerenderReady

after you have installed PrerenderReady, there are 3 different javascript files.

  1. prerenderio.js prerenderReady library
  2. prerenderAngular1.js prerenderReady module for angularJS
  3. prerenderjQuery.js prerenderReady plugin for jQuery

Once you have added prerenderio.js to your page, it will create a PrerenderIO object for window, you can get this object by

 window.prerender

prerenderReady options

var defaultOptions = {
// maxTimeout for all ajax calls, after this timeout, it will set prerenderReady to true.
// if there is no ajax call, will use this value.
// if maxTimeout is NULL or any value <=0, won't setup timeout.
maxTimeout: 1000,
// noAjaxCheckTimeout for no ajax pages. Since Prerender.io has its min timeout, to improve performance, // we can setup noAjaxCheckTimeout to notify Prerender.io that page is loaded completedly since there is no ajax calls.
// the number depends on your application load time.
noAjaxCheckTimeout:100,
// ajaxCompleteTimeout for single ajax call, after this timeout, it will call complete() method to check whether all ajax calls have been finished, // if yes, then set prerenderReady to true.
// this setting is very useful, especially, when you have ajax call in another ajax call, or you have timeout in your ajax call.
ajaxCompleteTimeout: 10,
// debug = true, will output debug information.
debug: false,
// enable prerender ajax tracking for all ajax calls.
// this setting is useful when you only want to use ajax tracking for some pages.
// by now, we don't support to disable ajax tracking for single ajax call in one page.
enable:true
};

You can configure prerenderReady by calling

window.prerender.config(options)

use in jQuery project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderjQuery.js
  3. For AJAX call, you don't need to add any code, prerenderjQuery will automatically track AJAX call by jQuery ($.ajax, $.get, $.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  4. For setTimeout, the window.prerender object has overwritten window.setTimeout by providing 3rd parameter TRUE/FALSE. If you want to track setTimeout for prerenderReady, just need to give the 3rd parameter to true, i.e.
setTimeout(function () {
$(".ajax-data-container").append("<div> " + new Date() + " Error: " + response.responseText + "</div>");
}, 1000, true);

use in angularJS project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderAngular1.js
  3. Inject prerenderIO module to your app module
var module = angular.module("prerenderExample", ["prerenderIO"]);
  1. For AJAX call, you don't need to add any code, prerenderAngular1 will automatically track AJAX call by angularJS 1.x ($http, $http.get, $http.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  2. For setTimeout, you need to inject prerenderTimeout into your controller or directives, i.e.
 module.controller("prerenderExampleController", ["$http", "$element", "$timeout", "prerenderTimeout", function ($http, $element, $timeout, prerenderTimeout) {
var windowTimeout = 9000;
var aspxTimeout = 2000;
$element.append("<div> " + new Date() + " Start:" + JSON.stringify({ windowTimeout: windowTimeout + " ms", aspxTimeout: aspxTimeout + " ms" }) + "</div>");
$http({
url: "../data.json?t=" + (new Date()),
method: "GET",
responseType:"json"
})
.then(
function (response) {
console.log(12);
var data = angular.extend({}, response.data);
// angular.element doesn't work in controller.
prerenderTimeout(function () {
data.Timeout = windowTimeout + " ms";
$element.append("<div> " + new Date() + " Success: " + JSON.stringify(data) + "</div>");
}, windowTimeout);
},
function (response) {
console.log(13);
$timeout(function () {
$element.append("<div> " + new Date() + " Error: " + response + "</div>");
}, windowTimeout);
}
);
}]);

##Examples

  1. jQuery Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/jQuery
  2. angularJS 1.x Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/angular1

About

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

prerenderReady-javascript

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

prerenderReady Introduction

When we use prerender.io, we can use window.prerenderReady to tell prerender.io service, the page is completely loaded. But it requires us to change a lot of existing code, which is a lot effort and not flexible. prerenderReady provides the functionality which helps us

  1. Tracks AJAX call automatically, after all AJAX calls are completed, it will automatically set window.prerenderReady to true.
  2. Provides an easy way to add tracking for setTimeout, so that we don't need to manually set window.prerenderReady. There are two plugins which are built on prerenderReady library, one for jQuery, the other one for angularJS.

install prerenderReady with Nuget

Install-Package DotNetOpen.PrerenderReady

after you have installed PrerenderReady, there are 3 different javascript files.

  1. prerenderio.js prerenderReady library
  2. prerenderAngular1.js prerenderReady module for angularJS
  3. prerenderjQuery.js prerenderReady plugin for jQuery

Once you have added prerenderio.js to your page, it will create a PrerenderIO object for window, you can get this object by

 window.prerender

prerenderReady options

var defaultOptions = {
// maxTimeout for all ajax calls, after this timeout, it will set prerenderReady to true.
// if there is no ajax call, will use this value.
// if maxTimeout is NULL or any value <=0, won't setup timeout.
maxTimeout: 1000,
// noAjaxCheckTimeout for no ajax pages. Since Prerender.io has its min timeout, to improve performance, // we can setup noAjaxCheckTimeout to notify Prerender.io that page is loaded completedly since there is no ajax calls.
// the number depends on your application load time.
noAjaxCheckTimeout:100,
// ajaxCompleteTimeout for single ajax call, after this timeout, it will call complete() method to check whether all ajax calls have been finished, // if yes, then set prerenderReady to true.
// this setting is very useful, especially, when you have ajax call in another ajax call, or you have timeout in your ajax call.
ajaxCompleteTimeout: 10,
// debug = true, will output debug information.
debug: false,
// enable prerender ajax tracking for all ajax calls.
// this setting is useful when you only want to use ajax tracking for some pages.
// by now, we don't support to disable ajax tracking for single ajax call in one page.
enable:true
};

You can configure prerenderReady by calling

window.prerender.config(options)

use in jQuery project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderjQuery.js
  3. For AJAX call, you don't need to add any code, prerenderjQuery will automatically track AJAX call by jQuery ($.ajax, $.get, $.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  4. For setTimeout, the window.prerender object has overwritten window.setTimeout by providing 3rd parameter TRUE/FALSE. If you want to track setTimeout for prerenderReady, just need to give the 3rd parameter to true, i.e.
setTimeout(function () {
$(".ajax-data-container").append("<div> " + new Date() + " Error: " + response.responseText + "</div>");
}, 1000, true);

use in angularJS project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderAngular1.js
  3. Inject prerenderIO module to your app module
var module = angular.module("prerenderExample", ["prerenderIO"]);
  1. For AJAX call, you don't need to add any code, prerenderAngular1 will automatically track AJAX call by angularJS 1.x ($http, $http.get, $http.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  2. For setTimeout, you need to inject prerenderTimeout into your controller or directives, i.e.
 module.controller("prerenderExampleController", ["$http", "$element", "$timeout", "prerenderTimeout", function ($http, $element, $timeout, prerenderTimeout) {
var windowTimeout = 9000;
var aspxTimeout = 2000;
$element.append("<div> " + new Date() + " Start:" + JSON.stringify({ windowTimeout: windowTimeout + " ms", aspxTimeout: aspxTimeout + " ms" }) + "</div>");
$http({
url: "../data.json?t=" + (new Date()),
method: "GET",
responseType:"json"
})
.then(
function (response) {
console.log(12);
var data = angular.extend({}, response.data);
// angular.element doesn't work in controller.
prerenderTimeout(function () {
data.Timeout = windowTimeout + " ms";
$element.append("<div> " + new Date() + " Success: " + JSON.stringify(data) + "</div>");
}, windowTimeout);
},
function (response) {
console.log(13);
$timeout(function () {
$element.append("<div> " + new Date() + " Error: " + response + "</div>");
}, windowTimeout);
}
);
}]);

##Examples

  1. jQuery Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/jQuery
  2. angularJS 1.x Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/angular1

About

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

prerenderReady-javascript

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

prerenderReady Introduction

When we use prerender.io, we can use window.prerenderReady to tell prerender.io service, the page is completely loaded. But it requires us to change a lot of existing code, which is a lot effort and not flexible. prerenderReady provides the functionality which helps us

  1. Tracks AJAX call automatically, after all AJAX calls are completed, it will automatically set window.prerenderReady to true.
  2. Provides an easy way to add tracking for setTimeout, so that we don't need to manually set window.prerenderReady. There are two plugins which are built on prerenderReady library, one for jQuery, the other one for angularJS.

install prerenderReady with Nuget

Install-Package DotNetOpen.PrerenderReady

after you have installed PrerenderReady, there are 3 different javascript files.

  1. prerenderio.js prerenderReady library
  2. prerenderAngular1.js prerenderReady module for angularJS
  3. prerenderjQuery.js prerenderReady plugin for jQuery

Once you have added prerenderio.js to your page, it will create a PrerenderIO object for window, you can get this object by

 window.prerender

prerenderReady options

var defaultOptions = {
// maxTimeout for all ajax calls, after this timeout, it will set prerenderReady to true.
// if there is no ajax call, will use this value.
// if maxTimeout is NULL or any value <=0, won't setup timeout.
maxTimeout: 1000,
// noAjaxCheckTimeout for no ajax pages. Since Prerender.io has its min timeout, to improve performance, // we can setup noAjaxCheckTimeout to notify Prerender.io that page is loaded completedly since there is no ajax calls.
// the number depends on your application load time.
noAjaxCheckTimeout:100,
// ajaxCompleteTimeout for single ajax call, after this timeout, it will call complete() method to check whether all ajax calls have been finished, // if yes, then set prerenderReady to true.
// this setting is very useful, especially, when you have ajax call in another ajax call, or you have timeout in your ajax call.
ajaxCompleteTimeout: 10,
// debug = true, will output debug information.
debug: false,
// enable prerender ajax tracking for all ajax calls.
// this setting is useful when you only want to use ajax tracking for some pages.
// by now, we don't support to disable ajax tracking for single ajax call in one page.
enable:true
};

You can configure prerenderReady by calling

window.prerender.config(options)

use in jQuery project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderjQuery.js
  3. For AJAX call, you don't need to add any code, prerenderjQuery will automatically track AJAX call by jQuery ($.ajax, $.get, $.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  4. For setTimeout, the window.prerender object has overwritten window.setTimeout by providing 3rd parameter TRUE/FALSE. If you want to track setTimeout for prerenderReady, just need to give the 3rd parameter to true, i.e.
setTimeout(function () {
$(".ajax-data-container").append("<div> " + new Date() + " Error: " + response.responseText + "</div>");
}, 1000, true);

use in angularJS project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderAngular1.js
  3. Inject prerenderIO module to your app module
var module = angular.module("prerenderExample", ["prerenderIO"]);
  1. For AJAX call, you don't need to add any code, prerenderAngular1 will automatically track AJAX call by angularJS 1.x ($http, $http.get, $http.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  2. For setTimeout, you need to inject prerenderTimeout into your controller or directives, i.e.
 module.controller("prerenderExampleController", ["$http", "$element", "$timeout", "prerenderTimeout", function ($http, $element, $timeout, prerenderTimeout) {
var windowTimeout = 9000;
var aspxTimeout = 2000;
$element.append("<div> " + new Date() + " Start:" + JSON.stringify({ windowTimeout: windowTimeout + " ms", aspxTimeout: aspxTimeout + " ms" }) + "</div>");
$http({
url: "../data.json?t=" + (new Date()),
method: "GET",
responseType:"json"
})
.then(
function (response) {
console.log(12);
var data = angular.extend({}, response.data);
// angular.element doesn't work in controller.
prerenderTimeout(function () {
data.Timeout = windowTimeout + " ms";
$element.append("<div> " + new Date() + " Success: " + JSON.stringify(data) + "</div>");
}, windowTimeout);
},
function (response) {
console.log(13);
$timeout(function () {
$element.append("<div> " + new Date() + " Error: " + response + "</div>");
}, windowTimeout);
}
);
}]);

##Examples

  1. jQuery Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/jQuery
  2. angularJS 1.x Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/angular1

About

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

prerenderReady-javascript

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

prerenderReady Introduction

When we use prerender.io, we can use window.prerenderReady to tell prerender.io service, the page is completely loaded. But it requires us to change a lot of existing code, which is a lot effort and not flexible. prerenderReady provides the functionality which helps us

  1. Tracks AJAX call automatically, after all AJAX calls are completed, it will automatically set window.prerenderReady to true.
  2. Provides an easy way to add tracking for setTimeout, so that we don't need to manually set window.prerenderReady. There are two plugins which are built on prerenderReady library, one for jQuery, the other one for angularJS.

install prerenderReady with Nuget

Install-Package DotNetOpen.PrerenderReady

after you have installed PrerenderReady, there are 3 different javascript files.

  1. prerenderio.js prerenderReady library
  2. prerenderAngular1.js prerenderReady module for angularJS
  3. prerenderjQuery.js prerenderReady plugin for jQuery

Once you have added prerenderio.js to your page, it will create a PrerenderIO object for window, you can get this object by

 window.prerender

prerenderReady options

var defaultOptions = {
// maxTimeout for all ajax calls, after this timeout, it will set prerenderReady to true.
// if there is no ajax call, will use this value.
// if maxTimeout is NULL or any value <=0, won't setup timeout.
maxTimeout: 1000,
// noAjaxCheckTimeout for no ajax pages. Since Prerender.io has its min timeout, to improve performance, // we can setup noAjaxCheckTimeout to notify Prerender.io that page is loaded completedly since there is no ajax calls.
// the number depends on your application load time.
noAjaxCheckTimeout:100,
// ajaxCompleteTimeout for single ajax call, after this timeout, it will call complete() method to check whether all ajax calls have been finished, // if yes, then set prerenderReady to true.
// this setting is very useful, especially, when you have ajax call in another ajax call, or you have timeout in your ajax call.
ajaxCompleteTimeout: 10,
// debug = true, will output debug information.
debug: false,
// enable prerender ajax tracking for all ajax calls.
// this setting is useful when you only want to use ajax tracking for some pages.
// by now, we don't support to disable ajax tracking for single ajax call in one page.
enable:true
};

You can configure prerenderReady by calling

window.prerender.config(options)

use in jQuery project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderjQuery.js
  3. For AJAX call, you don't need to add any code, prerenderjQuery will automatically track AJAX call by jQuery ($.ajax, $.get, $.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  4. For setTimeout, the window.prerender object has overwritten window.setTimeout by providing 3rd parameter TRUE/FALSE. If you want to track setTimeout for prerenderReady, just need to give the 3rd parameter to true, i.e.
setTimeout(function () {
$(".ajax-data-container").append("<div> " + new Date() + " Error: " + response.responseText + "</div>");
}, 1000, true);

use in angularJS project

  1. Install DotNetOpen.PrerenderReady nuget package.
  2. Add javascript references for both prerenderio.js and prerenderAngular1.js
  3. Inject prerenderIO module to your app module
var module = angular.module("prerenderExample", ["prerenderIO"]);
  1. For AJAX call, you don't need to add any code, prerenderAngular1 will automatically track AJAX call by angularJS 1.x ($http, $http.get, $http.post, ...), and set window.prerenderReady to true after all AJAX call have been completed.
  2. For setTimeout, you need to inject prerenderTimeout into your controller or directives, i.e.
 module.controller("prerenderExampleController", ["$http", "$element", "$timeout", "prerenderTimeout", function ($http, $element, $timeout, prerenderTimeout) {
var windowTimeout = 9000;
var aspxTimeout = 2000;
$element.append("<div> " + new Date() + " Start:" + JSON.stringify({ windowTimeout: windowTimeout + " ms", aspxTimeout: aspxTimeout + " ms" }) + "</div>");
$http({
url: "../data.json?t=" + (new Date()),
method: "GET",
responseType:"json"
})
.then(
function (response) {
console.log(12);
var data = angular.extend({}, response.data);
// angular.element doesn't work in controller.
prerenderTimeout(function () {
data.Timeout = windowTimeout + " ms";
$element.append("<div> " + new Date() + " Success: " + JSON.stringify(data) + "</div>");
}, windowTimeout);
},
function (response) {
console.log(13);
$timeout(function () {
$element.append("<div> " + new Date() + " Error: " + response + "</div>");
}, windowTimeout);
}
);
}]);

##Examples

  1. jQuery Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/jQuery
  2. angularJS 1.x Example: https://github.com/dingyuliang/prerenderready-javascript/tree/master/src/example/angular1

About

The project provides the functionality to track ajax call and settimeout for window.prerenderReady of prerender.io within jQuery application and angularJS 1.X application.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages