@@ -637,18 +637,32 @@ pub fn retrieve_and_embed_asset(
637
637
// Every other type of element gets processed here
638
638
639
639
// Parse media type for SCRIPT elements
640
- if node_name == "script" && get_node_attr ( node , "src" ) . is_some ( ) {
640
+ if node_name == "script" {
641
641
let script_media_type =
642
642
get_node_attr ( node, "type" ) . unwrap_or ( String :: from ( "text/javascript" ) ) ;
643
643
644
- if script_media_type == "text/javascript" {
645
- // TODO: embed content here instead of using data URLs
644
+ if script_media_type == "text/javascript"
645
+ || script_media_type == "application/javascript"
646
+ {
647
+ // Embed javascript code instead of using data URLs
648
+ let script_dom: RcDom =
649
+ parse_document ( RcDom :: default ( ) , Default :: default ( ) )
650
+ . one ( "<script>;</script>" ) ;
651
+ for script_node in
652
+ find_nodes ( & script_dom. document , vec ! [ "html" , "head" , "script" ] )
653
+ . iter ( )
654
+ {
655
+ let text_node = & script_node. children . borrow ( ) [ 0 ] ;
646
656
647
- // Create and embed data URL
648
- let mut data_url =
649
- create_data_url ( & script_media_type, & charset, & data, & final_url) ;
650
- data_url. set_fragment ( resolved_url. fragment ( ) ) ;
651
- set_node_attr ( node, attr_name, Some ( data_url. to_string ( ) ) ) ;
657
+ if let NodeData :: Text { ref contents } = text_node. data {
658
+ let mut tendril = contents. borrow_mut ( ) ;
659
+ tendril. clear ( ) ;
660
+ tendril. push_slice ( & String :: from_utf8_lossy ( & data) ) ;
661
+ }
662
+
663
+ node. children . borrow_mut ( ) . push ( text_node. clone ( ) ) ;
664
+ set_node_attr ( node, attr_name, None ) ;
665
+ }
652
666
} else {
653
667
// Create and embed data URL
654
668
let mut data_url =
0 commit comments