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@bolt/uikit-workshop@canopycanopycanopy/b-ber-reader-react@pranavraut033/js-utilsjs-feature-togglejslib-nightlykicad-utilsketcher-reactketcher-react-customketcher-react-shuzhangidb-sideloaderhtmlguyllc-jpackhep-exam-alemon-polyfillsledn-applyticusmasterrt.poolloyagramm-steedos-serverm-italent-web-platformlobster-logviewlamp-coremb-js-bridgemaycur-front-gateway@waltonseymour/ketcher-react@widergy/react-social-auth@wpbrothers/react-tool@workpathco/client@wundergraph/metro-config@twreporter/zoom-in-ui@ui5/webcomponents-ie11@todaydesign/nuxt-craftcms@thebigcrunch/sdk@usereactify/search-internals@usig-gcba/recorridos@usig-gcba/recorridos-multimodo@unparallel/connector-ri@vefacaglar/botframework-webchat@ventlio/tanstack-query@zalando/zally-web-ui@zachstowell/react-twitter-auth@tekpill/botframework-webchat@zoovu/runner-browser-apiag-game-es6@zingle/es-utilalgorandaliyun-rts-pusheraliyun-rts-sdkaxios-mock-serverapt-maint-react-app@clearc2/c2-react-config@chrissong/shooks@gsmlg/ui5-webcomponents-ie11@22u/react-twitter-auth@aarhus-university/au-lib-react-maps@a-g/game@abcnews/hash-scripts-loader@activfinancial/cg-api-explorer@eatalynet/reactivesearch-vue@compulimtest/do-not-use-botframework-directlinejs@computerrock/react-app-polyfill@considonet/getpostparams
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

5 years ago

8.1.0

5 years ago

8.0.0

6 years ago

7.0.1

6 years ago

7.0.0

6 years ago

6.0.0

6 years ago

5.1.0

7 years ago

5.0.1

7 years ago

5.0.0

7 years ago

4.0.1

7 years ago

4.0.0

7 years ago

3.0.0

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.3.0

8 years ago

1.2.0

9 years ago

1.1.0

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago