Ответ 1
возможно, просто мысль, но, возможно, "href" должен быть "src".
Я работаю над небольшим GreaseMonkey script, где я хотел бы встроить плагин jQuery (Markitup), чтобы script был полностью автономным (images + js), за исключением jQuery, который подается из Google.
Я нашел сайт http://www.greywyvern.com/code/php/binary2base64, в котором говорится, что вы можете встраивать javascript с href, если base64 кодирует script, что очень похоже на показывая изображения как basse64 из CSS.
<script type="text/javascript" href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>
Итак, я попробовал это, но не смог заставить его работать вообще, используя Firefox 3.0.5 на OS X.
Я собрал небольшую тестовую страницу, чтобы изолировать проблему, но не смог заставить ее работать на этой странице.
<!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');
, поэтому я должен получить два предупреждения, но единственное, что я вижу, - это второе, где предупреждение находится как текст внутри тега script.
Я делаю что-то неправильно или почему это не работает, никаких идей?
возможно, просто мысль, но, возможно, "href" должен быть "src".
Если вы проверите синтаксис тега script, вы получите
<script src="..."
^^^
src NOT href
Использование URI данных здесь не работает в IE 6 btw.
Что смешно, я работаю над той же проблемой: создание Greasemonkey script для добавления markItUp во все текстовые области страницы.
Теперь у меня нет проблемы с самой библиотекой script. Я не понимаю, почему вы хотите вставить его как Base64. Как указано, он будет больше.
Вы можете поместить его непосредственно в GM script, если хотите (некоторые делают это с помощью jQuery), или добавить динамически <script src="someURL"></script>
в документ и дождаться загрузки (есть многочисленные примеры этого в Сети) (неудобства: создает трафик на сайтах, содержащих файлы), или, как я сейчас пытаюсь, используя последнюю (0.8) функцию GM:
// @require jquery.js
// @require markitup.js
// @resource miuStyle style.css
Необходимые файлы JS автоматически загружаются в GM script из локальной копии, которая быстрая и всегда доступна. Не используйте упакованные версии, они здесь не работают. У меня также были проблемы с set.js, поэтому я просто ввел его прямо в script.
Он работает хорошо, но у меня нет стиля иконок.
Я должен поместить текст miuStyle на веб-страницу, я думаю, и изменить его, чтобы все фоновые изображения отображались на одном и том же изображении, размещенном на Photobucket или аналогичном, со смещением. Я не нашел способ использовать локальные изображения (в CSS), увы, даже с @resource.
Мой ответ не затрагивает вашу проблему, увы (но замечание Джона кажется действительно), но это может привести вас к другому, более простому решению.
Base-64 делает файл более крупным, но делает его более понятным для машины, поэтому он фактически увеличивает скорость страниц. Я определенно могу понять, зачем вам это нужно, если вы не хотите посмотреть 50 строк тарабарщины в вашем файле. FYI, я только что прочитал исследование, что база 64 на самом деле загружается медленнее на мобильном телефоне, поэтому, если ваше приложение будет тяжелым мобильным, я бы держался подальше.