With the following (GreaseMonkey) user script I am trying to find (and later access) a JavaScript object (namely 'Blazor'):
// ==UserScript==
// @name Test
// @version 1
// @grant none
// @run-at document-end
// ==/UserScript==
window.addEventListener ("load", doStuff);
function doStuff() {
setTimeout(function() {
console.log("window.hasProperty('Blazor'): " + window.hasOwnProperty("Blazor"));
console.log("'Blazor' in window: " + ('Blazor' in window));
console.log(window);
}, 2000);
}
When I run the script (i.e., reload the page), I get the following output in Firefox' console:
So window.Blazor
can not be found. However, when I inspect (click on) the window
object I can see the Blazor
property:
Calling 'Blazor' in window
in the console also returns true
.
Why is this property of window
not (yet?) available and how can I find and access it?
Update:
Based on madalinivascu's answer I tried the following:
function doStuff() {
console.log("<doStuff>");
var promise = new Promise(function(resolve, reject) {
var interval = setInterval(function() {
console.log("checking for Blazor");
if ('Blazor' in window) {
console.log("Blazor found");
clearInterval(interval);
resolve(window.Blazor);
}
}, 1000);
});
promise.then(successCallback, failureCallback);
console.log("</doStuff>");
}
function failureCallback(error) {
console.log("failure: " + error);
}
function successCallback(result) {
console.log("success: " + result);
}
which results in the following output:
So the function checking for Blazor is called indefinitely without success in finding it.