Skip to content

Commit cf3b220

Browse files
committed
Fix jsx-no-target-blank crash (fixes #821)
1 parent 0de2a9e commit cf3b220

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

lib/rules/jsx-no-target-blank.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,17 @@ module.exports = {
2525
return;
2626
}
2727

28-
if (node.name.name === 'target' && node.value.value.toLowerCase() === '_blank') {
28+
if (
29+
node.name.name === 'target' &&
30+
node.value.type === 'Literal' &&
31+
node.value.value.toLowerCase() === '_blank'
32+
) {
2933
var relFound = false;
3034
var attrs = node.parent.attributes;
3135
for (var idx in attrs) {
3236
if (attrs[idx].name && attrs[idx].name.name === 'rel') {
33-
var tags = attrs[idx].value.value.toLowerCase().split(' ');
34-
if (tags.indexOf('noopener') >= 0 && tags.indexOf('noreferrer') >= 0) {
37+
var tags = attrs[idx].value.type === 'Literal' && attrs[idx].value.value.toLowerCase().split(' ');
38+
if (!tags || (tags.indexOf('noopener') >= 0 && tags.indexOf('noreferrer') >= 0)) {
3539
relFound = true;
3640
break;
3741
}

tests/lib/rules/jsx-no-target-blank.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ ruleTester.run('jsx-no-target-blank', rule, {
3131
{code: '<a target="_blank" {...spreadProps} rel="noopener noreferrer"></a>', parserOptions: parserOptions},
3232
{code: '<a target="_blank" rel="noopener noreferrer" {...spreadProps}></a>', parserOptions: parserOptions},
3333
{code: '<p target="_blank"></p>', parserOptions: parserOptions},
34-
{code: '<a href="foobar" target="_BLANK" rel="NOOPENER noreferrer"></a>', parserOptions: parserOptions}
34+
{code: '<a href="foobar" target="_BLANK" rel="NOOPENER noreferrer"></a>', parserOptions: parserOptions},
35+
{code: '<a target="_blank" rel={relValue}></a>', parserOptions: parserOptions},
36+
{code: '<a target={targetValue} rel="noopener noreferrer"></a>', parserOptions: parserOptions}
3537
],
3638
invalid: [
3739
{code: '<a target="_blank"></a>', parserOptions: parserOptions,

0 commit comments

Comments
 (0)