diff --git a/src/browser/html/elements.zig b/src/browser/html/elements.zig
index c8c98c31..da9b0fb5 100644
--- a/src/browser/html/elements.zig
+++ b/src/browser/html/elements.zig
@@ -977,6 +977,21 @@ pub const HTMLScriptElement = struct {
return try parser.elementRemoveAttribute(parser.scriptToElt(self), "nomodule");
}
+ pub fn get_nonce(self: *parser.Script) !?[]const u8 {
+ return try parser.elementGetAttribute(
+ parser.scriptToElt(self),
+ "nonce",
+ ) orelse "";
+ }
+
+ pub fn set_nonce(self: *parser.Script, v: []const u8) !void {
+ try parser.elementSetAttribute(
+ parser.scriptToElt(self),
+ "nonce",
+ v,
+ );
+ }
+
pub fn get_onload(self: *parser.Script, page: *Page) !?Env.Function {
const state = page.getNodeState(@ptrCast(@alignCast(self))) orelse return null;
return state.onload;
diff --git a/src/tests/html/script/script.html b/src/tests/html/script/script.html
index 1ce00feb..0b579d10 100644
--- a/src/tests/html/script/script.html
+++ b/src/tests/html/script/script.html
@@ -11,4 +11,8 @@
script.defer = true;
testing.expectEqual(true, script.defer);
+
+ testing.expectEqual('', script.nonce);
+ script.nonce = 'hello';
+ testing.expectEqual('hello', script.nonce);