@@ -674,10 +674,120 @@ pub const HTMLQuoteElement = struct {
674674 pub const mem_guarantied = true ;
675675};
676676
677+ // https://html.spec.whatwg.org/#the-script-element
677678pub const HTMLScriptElement = struct {
678679 pub const Self = parser .Script ;
679680 pub const prototype = * HTMLElement ;
680681 pub const mem_guarantied = true ;
682+
683+ pub fn get_src (self : * parser.Script ) ! ? []const u8 {
684+ return try parser .elementGetAttribute (
685+ parser .scriptToElt (self ),
686+ "src" ,
687+ ) orelse "" ;
688+ }
689+
690+ pub fn set_src (self : * parser.Script , v : []const u8 ) ! void {
691+ return try parser .elementSetAttribute (
692+ parser .scriptToElt (self ),
693+ "src" ,
694+ v ,
695+ );
696+ }
697+
698+ pub fn get_type (self : * parser.Script ) ! ? []const u8 {
699+ return try parser .elementGetAttribute (
700+ parser .scriptToElt (self ),
701+ "type" ,
702+ ) orelse "" ;
703+ }
704+
705+ pub fn set_type (self : * parser.Script , v : []const u8 ) ! void {
706+ return try parser .elementSetAttribute (
707+ parser .scriptToElt (self ),
708+ "type" ,
709+ v ,
710+ );
711+ }
712+
713+ pub fn get_text (self : * parser.Script ) ! ? []const u8 {
714+ return try parser .elementGetAttribute (
715+ parser .scriptToElt (self ),
716+ "text" ,
717+ ) orelse "" ;
718+ }
719+
720+ pub fn set_text (self : * parser.Script , v : []const u8 ) ! void {
721+ return try parser .elementSetAttribute (
722+ parser .scriptToElt (self ),
723+ "text" ,
724+ v ,
725+ );
726+ }
727+
728+ pub fn get_integrity (self : * parser.Script ) ! ? []const u8 {
729+ return try parser .elementGetAttribute (
730+ parser .scriptToElt (self ),
731+ "integrity" ,
732+ ) orelse "" ;
733+ }
734+
735+ pub fn set_integrity (self : * parser.Script , v : []const u8 ) ! void {
736+ return try parser .elementSetAttribute (
737+ parser .scriptToElt (self ),
738+ "integrity" ,
739+ v ,
740+ );
741+ }
742+
743+ pub fn get_async (self : * parser.Script ) ! bool {
744+ _ = try parser .elementGetAttribute (
745+ parser .scriptToElt (self ),
746+ "async" ,
747+ ) orelse return false ;
748+
749+ return true ;
750+ }
751+
752+ pub fn set_async (self : * parser.Script , v : bool ) ! void {
753+ if (v ) {
754+ return try parser .elementSetAttribute (parser .scriptToElt (self ), "async" , "" );
755+ }
756+
757+ return try parser .elementRemoveAttribute (parser .scriptToElt (self ), "async" );
758+ }
759+
760+ pub fn get_defer (self : * parser.Script ) ! bool {
761+ _ = try parser .elementGetAttribute (
762+ parser .scriptToElt (self ),
763+ "defer" ,
764+ ) orelse false ;
765+ return true ;
766+ }
767+
768+ pub fn set_defer (self : * parser.Script , v : bool ) ! void {
769+ if (v ) {
770+ return try parser .elementSetAttribute (parser .scriptToElt (self ), "defer" , "" );
771+ }
772+
773+ return try parser .elementRemoveAttribute (parser .scriptToElt (self ), "defer" );
774+ }
775+
776+ pub fn get_noModule (self : * parser.Script ) ! bool {
777+ _ = try parser .elementGetAttribute (
778+ parser .scriptToElt (self ),
779+ "nomodule" ,
780+ ) orelse false ;
781+ return true ;
782+ }
783+
784+ pub fn set_noModule (self : * parser.Script , v : bool ) ! void {
785+ if (v ) {
786+ return try parser .elementSetAttribute (parser .scriptToElt (self ), "nomodule" , "" );
787+ }
788+
789+ return try parser .elementRemoveAttribute (parser .scriptToElt (self ), "nomodule" );
790+ }
681791};
682792
683793pub const HTMLSelectElement = struct {
@@ -922,4 +1032,15 @@ pub fn testExecFn(
9221032 .{ .src = "a.text = 'OK'" , .ex = "OK" },
9231033 };
9241034 try checkCases (js_env , & anchor );
1035+
1036+ var script = [_ ]Case {
1037+ .{ .src = "let script = document.createElement('script')" , .ex = "undefined" },
1038+ .{ .src = "script.src = 'foo.bar'" , .ex = "foo.bar" },
1039+
1040+ .{ .src = "script.async = true" , .ex = "true" },
1041+ .{ .src = "script.async" , .ex = "true" },
1042+ .{ .src = "script.async = false" , .ex = "false" },
1043+ .{ .src = "script.async" , .ex = "false" },
1044+ };
1045+ try checkCases (js_env , & script );
9251046}
0 commit comments