Embed javascript as base64

Daniel Johansson picture Daniel Johansson · Dec 20, 2008 · Viewed 16.3k times · Source

I'm working on a small GreaseMonkey script where I would like to embed a jQuery plugin (Markitup) so that the script is fully self contained (images + js) except for jQuery which is served from google.

I found the site http://www.greywyvern.com/code/php/binary2base64 which says that you can embed javascript with the href if you base64 encode the script, much like serving images as basse64 from CSS.

<script type="text/javascript" href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>

So i tried that but couldn't get it to work at all, using Firefox 3.0.5 on OS X.

I put together a small test page to isolate the problem but couldn't get it to work at that page either.

<!DOCTYPE HTML>
<html>
   <head>
      <title>Title</title>
      <meta charset="utf-8">
   </head>
   <body>
      <script href="data:text/javascript;base64,YWxlcnQoJ2FzYWRhc2QnKTsK"></script> 
      <script>alert('a');</script>  
   </body>
</html>

The base64 string (YWxlcnQoJ2FzYWRhc2QnKTsK) says alert('asadasd'); so I'm supposed to get two alerts but the only one I see is the second one where the alert is located as text inside the script tag.

Am I doing something wrong or why isn't this working, any ideas?

Answer

John Boker picture John Boker · Dec 20, 2008

maybe just a thought but maybe the "href" should be "src" instead.