url-search-params
Deprecated
This polyfill has been improved, better tested, and moved under the ungap umbrella.
The new version is available as @ungap/url-search-params.
This is a polyfill for the URLSearchParams API.
It is possible to simply include build/url-search-params.js or grab it via npm.
npm install url-search-params
The function is exported directly.
var URLSearchParams = require('url-search-params');
MIT Style License
iOS 10 + other platforms bug
In case you'd like to replace the broken global native constructor, you can check some well known issue before including this polyfill on your project/page.
<script>
try { if (new URLSearchParams('q=%2B').get('q') !== '+') throw {}; }
catch (error) {
window.URLSearchParams = void 0;
document.write('<script src="/js/url-search-params.js"><'+'/script>');
}
</script>
About HTMLAnchorElement.prototype.searchParams
This property is already implemented in Firefox and polyfilled here only for browsers that exposes getters and setters
through the HTMLAnchorElement.prototype
.
In order to know if such property is supported, you must do the check as such:
if ('searchParams' in HTMLAnchorElement.prototype) {
// polyfill for <a> links supported
}
If you do this check instead:
if (HTMLAnchorElement.prototype.searchParams) {
// throws a TypeError
}
this polyfill will reflect native behavior, throwing a type error due access to a property in a non instance of HTMLAnchorElement
.
Nothing new to learn here, just a reminder.