From bf6deb997f2e65c2d395289dabb10c4ec7e148bc Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Sun, 7 May 2023 11:22:30 +0800 Subject: [PATCH 1/3] #896@minor: Add document.links. --- .../happy-dom/src/nodes/document/Document.ts | 7 ++++++ .../happy-dom/src/nodes/document/IDocument.ts | 1 + .../test/nodes/document/Document.test.ts | 22 +++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/packages/happy-dom/src/nodes/document/Document.ts b/packages/happy-dom/src/nodes/document/Document.ts index 9ce6205f6..91fde073e 100644 --- a/packages/happy-dom/src/nodes/document/Document.ts +++ b/packages/happy-dom/src/nodes/document/Document.ts @@ -258,6 +258,13 @@ export default class Document extends Node implements IDocument { } } + /** + * Returns a collection of all area elements and a elements in a document with a value for the href attribute. + */ + public get links(): IHTMLCollection { + return >this.querySelectorAll('a[href],area[href]'); + } + /** * Last element child. * diff --git a/packages/happy-dom/src/nodes/document/IDocument.ts b/packages/happy-dom/src/nodes/document/IDocument.ts index 8dc3475e8..73cf79aa7 100644 --- a/packages/happy-dom/src/nodes/document/IDocument.ts +++ b/packages/happy-dom/src/nodes/document/IDocument.ts @@ -45,6 +45,7 @@ export default interface IDocument extends IParentNode { readonly documentURI: string; readonly visibilityState: VisibilityStateEnum; readonly hidden: boolean; + readonly links: IHTMLCollection; cookie: string; title: string; diff --git a/packages/happy-dom/test/nodes/document/Document.test.ts b/packages/happy-dom/test/nodes/document/Document.test.ts index eaaa3a1d6..cba8c4d3b 100644 --- a/packages/happy-dom/test/nodes/document/Document.test.ts +++ b/packages/happy-dom/test/nodes/document/Document.test.ts @@ -77,6 +77,28 @@ describe('Document', () => { }); }); + describe('get links()', () => { + it('Returns a elements.', () => { + const link1 = document.createElement('a'); + const link2 = document.createElement('a'); + link1.setAttribute('href', ''); + + document.body.appendChild(link1); + document.body.appendChild(link2); + + let links = document.links; + + expect(links.length).toBe(1); + expect(links[0]).toBe(link1); + + link2.setAttribute('href', ''); + links = document.links; + expect(links.length).toBe(2); + expect(links[0]).toBe(link1); + expect(links[1]).toBe(link2); + }); + }); + describe('get scripts()', () => { it('Returns script elements.', () => { const div = document.createElement('div'); From 4d9021465a2f474d13b34776e7436357528140e8 Mon Sep 17 00:00:00 2001 From: Chris Fasel Date: Sun, 7 May 2023 08:45:25 +0200 Subject: [PATCH 2/3] #898@minor: Change deprecated shadowroot attribute to shadowrootmode. --- packages/happy-dom/src/xml-serializer/XMLSerializer.ts | 2 +- packages/happy-dom/test/xml-serializer/XMLSerializer.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/happy-dom/src/xml-serializer/XMLSerializer.ts b/packages/happy-dom/src/xml-serializer/XMLSerializer.ts index 9a255bb57..c2f3b5f1a 100644 --- a/packages/happy-dom/src/xml-serializer/XMLSerializer.ts +++ b/packages/happy-dom/src/xml-serializer/XMLSerializer.ts @@ -40,7 +40,7 @@ export default class XMLSerializer { } if (options?.includeShadowRoots && element.shadowRoot) { - innerHTML += `