将javascript嵌入为base64

时间:2008-12-20 15:22:13

标签: javascript embed base64

我正在编写一个小的GreaseMonkey脚本,我想嵌入一个jQuery插件(Markitup),这样脚本完全自包含(images + js),除了谷歌提供的jQuery。

我发现网站http://www.greywyvern.com/code/php/binary2base64表示你可以使用href嵌入javascript,如果你对脚本进行base64编码,就像从CSS中将图像作为basse64提供一样。

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

所以我试过了,但在OS X上使用Firefox 3.0.5,根本无法使用它。

我整理了一个小测试页面以隔离问题,但也无法让它在该页面上运行。

<!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>

base64字符串(YWxlcnQoJ2FzYWRhc2QnKTsK)说alert('asadasd');所以我应该得到两个警报,但我看到的唯一警报是第二个警报位于脚本标记内的文本。

我做错了什么或为什么这不起作用,有什么想法?

4 个答案:

答案 0 :(得分:14)

也许只是一个想法,但也许“href”应该是“src”而不是。

答案 1 :(得分:3)

如果您要检查脚本标记语法,那么

<script src="..."
        ^^^
        src NOT href

此处使用数据URI在IE 6 btw中不起作用。

答案 2 :(得分:1)

这很有趣,我正在研究同样的问题:制作一个Greasemonkey脚本,将markItUp添加到页面的所有textareas。

现在,我对库脚本本身没有任何问题。无论如何,我不明白为什么要将它作为Base64插入。正如所指出的那样,它会更大 你可以直接把它放在GM脚本中(有些人用jQuery做),或动态添加<script src="someURL"></script>到文档并等待加载(网上有很多例子)(不便之处) :在持有文件的网站上创建流量),或者,就像我目前正在尝试的那样,使用GM的最新(0.8)功能:

// @require      jquery.js
// @require      markitup.js
// @resource     miuStyle style.css

所需的JS文件会自动从本地副本加载到GM脚本中,该副本速度快且始终可用。不要使用打包版本,它们在这里不起作用。我也遇到过set.js的问题,所以我直接在脚本中输入。
它运作良好,但我还没有风格,也没有图标 我认为,我必须将miuStyle文本放在网页中,然后更改它,以便所有背景图像都指向托管在Photobucket上的相同图像或类似图像,并带有偏移量。我还没有找到一种方法来使用本地图像(在CSS中),唉,甚至使用@resource。

我的回答并没有解决你的问题,唉(但约翰的评论似乎有效),但它可能会让你找到另一个更简单的解决方案。

答案 3 :(得分:-3)

Base-64使文件更大,但它使机器更易读,因此它实际上增加了pagespeed。我绝对可以理解你为什么要这样,除非你想在文件中查看50行乱码。仅供参考,我刚刚阅读了一项基于64实际上在移动设备上加载较慢的研究,因此,如果您的应用程序是重型移动设备我会远离