fix(upgrade): fix AngularJsUrlCodec to support Safari (#32959)
Safari throws an error when the new URL() constructor is called with an undefined base. This change checks whether the base is undefined and then calls the corresponding version of the URL constructor. fix(upgrade): simplify solution by replacing undefined with '' Co-Authored-By: Pete Bacon Darwin <pete@bacondarwin.com> Simplify solution by replacing undefined with '' Co-Authored-By: Pete Bacon Darwin <pete@bacondarwin.com> fix(upgrade): Avoid passing an empty string as the base as well. Browsers other than Safari may have issues with the empty string. PR Close #32959
This commit is contained in:
parent
448749cafa
commit
39e8ceb2cd
|
@ -198,7 +198,8 @@ export class AngularJSUrlCodec implements UrlCodec {
|
|||
// https://github.com/angular/angular.js/blob/864c7f0/src/ng/urlUtils.js#L60
|
||||
parse(url: string, base?: string) {
|
||||
try {
|
||||
const parsed = new URL(url, base);
|
||||
// Safari 12 throws an error when the URL constructor is called with an undefined base.
|
||||
const parsed = !base ? new URL(url) : new URL(url, base);
|
||||
return {
|
||||
href: parsed.href,
|
||||
protocol: parsed.protocol ? parsed.protocol.replace(/:$/, '') : '',
|
||||
|
@ -335,4 +336,4 @@ function encodeUriQuery(val: string, pctEncodeSpaces: boolean = false) {
|
|||
.replace(/%2C/gi, ',')
|
||||
.replace(/%3B/gi, ';')
|
||||
.replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue