i7guokui commented on PR #115:
URL:
https://github.com/apache/skywalking-client-js/pull/115#issuecomment-1765817725
> > > > > > > > When the match variable is null, the url will be '', and
reading match[1] will result in a runtime error.
> > > > > > >
> > > > > > >
> > > > > > > I did not reproduce this issue, and the `match && match[1]` is
in codes, I don't think the error will happen.
> > > > > >
> > > > > >
> > > > > > @Fine0830
> > > > > > ```
> > > > > > // background-image: url('https://www.example.com/test.png')
> > > > > > const match = getStyle(item.ele,
'background-image').match(/url\(\"(.*?)\"\)/);
> > > > > > let url: string = '';
> > > > > > if (match && match[1]) { // match would be null and this branch
would not be executed
> > > > > > url = match[1];
> > > > > > }
> > > > > > if (!url.includes('http')) { // url would be '' and this branch
would be executed
> > > > > > url = location.protocol + match[1]; // throw a error when read
property 1 from match, because match would be null
> > > > > > }
> > > > > > ```
> > > > >
> > > > >
> > > > > I gave it a try but get `match` is
`['url("https://www.example.com/test.png")',
'https://www.example.com/test.png', index: 0, input:
'url("https://www.example.com/test.png")', groups: undefined]`, not `null`.
> > > >
> > > >
> > > > The regular expression does not account for matching URLs with
single quotes or URLs without any quotes.
> > >
> > >
> > > Could you explain what is the `background-image` value in your case?
> >
> >
> > background-image: url('https://www.example.com/test.png'); // single
quotes background-image: url("https://www.example.com/test.png"); // double
quotes background-image: url(https://www.example.com/test.png); // without any
quotes
>
> I have checked those three parameters, the `getStyle` always return a
value like `url("https://www.example.com/test.png")`. And I haven't found the
`match` value will be `null`.
Sorry for giving an incorrect case!
```css
background-image: linear-gradient(130deg, #f6f8ff 0%, #fcfcff 100%);
```
```js
const match = getStyle(item.ele,
'background-image').match(/url\(\"(.*?)\"\)/);
let url: string = '';
if (match && match[1]) { // match would be null and this branch would not be
executed
url = match[1];
}
if (!url.includes('http')) { // url would be '' and this branch would be
executed
url = location.protocol + match[1]; // throw a error when read property 1
from match, because match would be null
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]