我正在编写一个小的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');
所以我应该得到两个警报,但我看到的唯一警报是第二个警报位于脚本标记内的文本。
我做错了什么或为什么这不起作用,有什么想法?
答案 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实际上在移动设备上加载较慢的研究,因此,如果您的应用程序是重型移动设备我会远离