Skip to content

Commit e6459e7

Browse files
authored
fix(jsx/dom): Fixed a bug that caused Script elements to turn into Style elements. (#3294)
1 parent 8f16802 commit e6459e7

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/jsx/dom/intrinsic-element/components.test.tsx

+27
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,33 @@ describe('intrinsic element', () => {
750750
await Promise.resolve()
751751
expect(root.innerHTML).toBe('<div><div>Content</div><button>Show</button></div>')
752752
})
753+
754+
it('should be inserted into body if has no props', async () => {
755+
const App = () => {
756+
return (
757+
<div>
758+
<script>alert('Hello')</script>
759+
</div>
760+
)
761+
}
762+
render(<App />, root)
763+
expect(document.head.innerHTML).toBe('')
764+
// prettier-ignore
765+
expect(root.innerHTML).toBe('<div><script>alert(\'Hello\')</script></div>')
766+
})
767+
768+
it('should be inserted into body if has only src prop', async () => {
769+
const App = () => {
770+
return (
771+
<div>
772+
<script src='script.js'></script>
773+
</div>
774+
)
775+
}
776+
render(<App />, root)
777+
expect(document.head.innerHTML).toBe('')
778+
expect(root.innerHTML).toBe('<div><script src="script.js"></script></div>')
779+
})
753780
})
754781

755782
it('accept ref object', async () => {

src/jsx/dom/intrinsic-element/components.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ export const title: FC<PropsWithChildren> = (props) => {
226226
export const script: FC<PropsWithChildren<IntrinsicElements['script']>> = (props) => {
227227
if (!props || ['src', 'async'].some((k) => !props[k])) {
228228
return newJSXNode({
229-
tag: 'style',
229+
tag: 'script',
230230
props,
231231
})
232232
}

0 commit comments

Comments
 (0)