@@ -310,6 +310,18 @@ export class Controller {
310310 }
311311}
312312
313+ function base64Encode ( text : string ) {
314+ return btoa (
315+ new TextEncoder ( )
316+ . encode ( text )
317+ . reduce (
318+ ( data , byte ) => ( data . push ( String . fromCharCode ( byte ) ) , data ) ,
319+ [ ] as any
320+ )
321+ . join ( "" )
322+ ) ;
323+ }
324+
313325function yieldGetInjectScripts (
314326 cookieJar : ScramjetGlobal . CookieJar ,
315327 config : Config ,
@@ -328,8 +340,8 @@ function yieldGetInjectScripts(
328340 script ( config . injectPath ) ,
329341 script ( prefix . href + config . virtualWasmPath ) ,
330342 script (
331- "data:text/javascript;base64," +
332- btoa ( `
343+ "data:text/javascript;charset=utf-8; base64," +
344+ base64Encode ( `
333345 document.currentScript.remove();
334346 $scramjetController.load({
335347 config: ${ JSON . stringify ( config ) } ,
@@ -381,7 +393,9 @@ export class Frame {
381393
382394 str += script ( config . scramjetPath ) ;
383395 str += script ( this . prefix + config . virtualWasmPath ) ;
384- str += `
396+ str += script (
397+ "data:text/javascript;charset=utf-8;base64," +
398+ base64Encode ( `
385399 (()=>{
386400 const { ScramjetClient, CookieJar, setWasm } = $scramjet;
387401
@@ -410,7 +424,8 @@ export class Frame {
410424
411425 client.hook();
412426 })();
413- ` ;
427+ ` )
428+ ) ;
414429
415430 return str ;
416431 } ,
0 commit comments