diff --git a/CHANGELOG.md b/CHANGELOG.md index 182437c18f0..703b32c7f02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -496,4 +496,6 @@ Released with 1.0.0-beta.37 code base. ## [1.7.1] ### Fixed -- Fix a typo in the documentation for `methods.myMethod.send` (#4599) \ No newline at end of file +- Fix a typo in the documentation for `methods.myMethod.send` (#4599) +- Use globalThis to locate global object if possible (#4613) + diff --git a/packages/web3-core-requestmanager/src/givenProvider.js b/packages/web3-core-requestmanager/src/givenProvider.js index 2f57f1a51ce..f7fb84d6792 100644 --- a/packages/web3-core-requestmanager/src/givenProvider.js +++ b/packages/web3-core-requestmanager/src/givenProvider.js @@ -26,11 +26,13 @@ var givenProvider = null; // ADD GIVEN PROVIDER /* jshint ignore:start */ -var global; -try { - global = Function('return this')(); -} catch (e) { - global = window; +var global = typeof globalThis === 'object' ? globalThis : undefined; +if(!global) { + try { + global = Function('return this')(); + } catch (e) { + global = self; + } } // EIP-1193: window.ethereum diff --git a/packages/web3-eth-accounts/src/index.js b/packages/web3-eth-accounts/src/index.js index e1a44e4791b..1f2ec649b62 100644 --- a/packages/web3-eth-accounts/src/index.js +++ b/packages/web3-eth-accounts/src/index.js @@ -768,7 +768,7 @@ if (!storageAvailable('localStorage')) { function storageAvailable(type) { var storage; try { - storage = window[type]; + storage = self[type]; var x = '__storage_test__'; storage.setItem(x, x); storage.removeItem(x); diff --git a/packages/web3-providers-ws/src/helpers.js b/packages/web3-providers-ws/src/helpers.js index 25347e3f2ff..28750c43070 100644 --- a/packages/web3-providers-ws/src/helpers.js +++ b/packages/web3-providers-ws/src/helpers.js @@ -19,7 +19,7 @@ if (isNode || isRN) { helpers = require('url').parse; } } else { - _btoa = btoa.bind(window); + _btoa = btoa.bind(typeof globalThis === 'object' ? globalThis : self); helpers = function(url) { return new URL(url); };