Reputation: 119
my code
let url = new URL('http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5');
let searchParams = new URLSearchParams(url.search);
console.log(searchParams.get('c')); // outputs "m2-m3-m4-m5"
and the error
Uncaught TypeError: URL is not a constructor
Upvotes: 2
Views: 15765
Reputation: 117
The problem occurs because url.URL
is undefined
(read more in this comment).
Upvotes: 0
Reputation: 164736
The only thing that would cause this error in any recent version of Chrome (at least since 2014's v32) would be if you had some other code that overwrote the URL
symbol.
For example
const URL = 'I am now a string'
// later...
let url = new URL('http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5');
If you're having trouble locating the code that's overwriting URL
, you could start by simply adding
console.log(URL)
to your code. The value logged may give you a hint. Otherwise, see this post ~ How to know in which file that defined a js global var in chrome console?
Solutions:
On that last note, you could avoid this problem like this
(function() {
const URL = 'I am a string but not window.URL'
// later...
let url = new window.URL('http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5');
console.info(url.search)
})()
Upvotes: 9