8.2.5 • Published 2 years ago

url-search-params-polyfill v8.2.5

Weekly downloads
401,917
License
MIT
Repository
github
Last release
2 years ago

URLSearchParams Polyfill npm.io

This is a polyfill library for JavaScript's URLSearchParams class.

Features

  • Implemented all features from MDN document.
  • Can use for both browsers and Node.js.
  • Detect if browsers have full support for URLSearchParams and extend it
  • Compatible with IE8 and above

Installation

This can also be installed with npm.

$ npm install url-search-params-polyfill --save

For Babel and ES2015+, make sure to import the file:

import 'url-search-params-polyfill';

For ES5:

require('url-search-params-polyfill');

For browser, copy the index.js file to your project, and add a script tag in your html:

<script src="index.js"></script>

Usage

Use URLSearchParams directly. You can instantiate a new instance of URLSearchParams from a string or an object.

// new an empty object
var search1 = new URLSearchParams();

// from a string
var search2 = new URLSearchParams("id=1&from=home");

// from an object
var search3 = new URLSearchParams({ id: 1, from: "home" });

// from location.search, will remove first "?" automatically
var search4 = new URLSearchParams(window.location.search);

// from anther URLSearchParams object
var search5 = new URLSearchParams(search2);

// from a sequence
var search6 = new URLSearchParams([["foo", 1], ["bar", 2]]);

append

var search = new URLSearchParams();

search.append("id", 1);

delete

search.delete("id");

get

search.get("id");

getAll

search.getAll("id");

has

search.has("id");

set

search.set("id", 2);

toString

search.toString();

sort

search.sort();

forEach

search.forEach(function (item) {
  console.log(item);
});

keys

for (var key of search.keys()) {
  console.log(key);
}

values

for (var value of search.values()) {
  console.log(value);
}

for...of

for (var item of search) {
  console.log('key: ' + item[0] + ', ' + 'value: ' + item[1]);
}

size

console.log(search.size)

Known Issues

Use with fetch (#18)

Via fetch spec, when passing a URLSearchParams object as a request body, the request should add a header with Content-Type: application/x-www-form-urlencoded; charset=UTF-8, but browsers which have fetch support and not URLSearchParams support do not have this behavior.

Via the data of caniuse, there are many browsers which support fetch but not URLSearchParams:

EdgeChromeOperaSamsung InternetQQBaidu
14 - 1640 - 4827 - 3541.27.12

If you want to be compatible with these browsers, you should add a Content-Type header manually:

function myFetch(url, { headers = {}, body }) {
    headers = headers instanceof Headers ? headers : new Headers(headers);
    
    if (body instanceof URLSearchParams) {
        headers.set('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    
    fetch(url, {
        headers,
        body
    });
}

LICENSE

MIT license

@axa-ch/pod-kmu-20@piotrowiczmateusz/common-moduleskicad-parserreact-dummy-packagedecoupled-front-endvaluecouponvib-library@ketcher/reactmeiroo-steedos-serverreactivesearchuibrugsdistro@code.gov/code-gov-front-endapollo-componentsconnector-ri@itlangzi/comment-jssid-npm-test3sid-npmtest-1sid-npmtest-2sid-test-create-npmht-pc-loginproduction-enginetipalti-iframe-uiapplication-buyer-dealscocos-kyklarna-mobile-sdk-payments-wrapper-v2hep-examtepgsj@everything-registry/sub-chunk-3023@koreacreditdata/yuhinawix-payments-dashboardvuex-url-search-paramsvue-map-3dsuperid-components-testsyanflowervt-password-pickervue-gtmvue-gtm-customuwbvue-antu-drone-livevue-antu-drone-lives@dotdev/next-components@companieshouse/api-sdk-node@compulimtest/do-not-use-botframework-directlinejs@computerrock/react-app-polyfill@configuratorware/configurator-admingui@configuratorware/configurator-frontendgui@cubejs-client/core@considonet/getpostparams@devdiary/ui@defichain/ocean-api-client@defichain/whale-api-client@doodle3d/doodle3d-api@bolt/uikit-workshop@canopycanopycanopy/b-ber-reader-react@pranavraut033/js-utilsjs-feature-togglejslib-nightlykicad-utilsketcher-reactketcher-react-customketcher-react-shuzhangsteedos-servertimeline-tvui-ib-applicationtracking-logtiptap-renderingtiptap-rendering-xiatiantita-talentuitravelodge_price_components@appbaseio/reactivesearch-vue@appbaseio/reactivesearch@anygraaf/neo-sdk@anjuma/vue-rs@asteffey/react-fcc-test@arkade/argent@algorandfoundation/algorand-metamask-snap@aligov/pegasus@axa-ch/pod-rsv@axa-ch/pod-kmu-20-stable@axa-ch/alt-pod-esales-mf@axa-ch/alt-pod-kmu-20@beatchainmusic/ui@binary-com/smartcharts@cdxoo/react-router-url-search-params@chrissong/shooks@clearc2/c2-react-config@22u/react-twitter-auth@activfinancial/cg-api-explorer@aarhus-university/au-lib-react-maps@abcnews/hash-scripts-loader@a-g/game@deriv/deriv-chartsxunjijssdkyakuza1yyuap-historylogxod-clientzengenti-forms-packagezhny-securityzyc-formvue-running-numberwarning-component
8.2.3

2 years ago

8.2.2

2 years ago

8.2.5

2 years ago

8.2.4

2 years ago

8.2.1

2 years ago

8.2.0

2 years ago

8.1.1

4 years ago

8.1.0

5 years ago

8.0.0

5 years ago

7.0.1

6 years ago

7.0.0

6 years ago

6.0.0

6 years ago

5.1.0

6 years ago

5.0.1

6 years ago

5.0.0

7 years ago

4.0.1

7 years ago

4.0.0

7 years ago

3.0.0

7 years ago

2.0.3

7 years ago

2.0.2

7 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.3.0

8 years ago

1.2.0

8 years ago

1.1.0

8 years ago

1.0.2

8 years ago

1.0.1

9 years ago

1.0.0

9 years ago