Я работаю над небольшим скриптом GreaseMonkey, в который я хотел бы встроить плагин jQuery (Markitup), чтобы скрипт был полностью самодостаточным (изображения + js), за исключением jQuery, который обслуживается из Google.
Я нашел сайт http://www.greywyvern.com/code/php/binary2base64, на котором говорится, что вы можете встраивать javascript с href, если вы кодируете base64 скрипт, так же, как обслуживание изображений как 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');, поэтому я должен получить два предупреждения, но я вижу только одно, в котором предупреждение находится в виде текста внутри тега сценария.
Я что-то делаю не так или почему это не работает, есть идеи?
Собственно, понятия не имею. Я просто пытаюсь скопировать и вставить весь аддон jquery в нижнюю часть моего скрипта grease monkey, и это сработало нормально. Думаю, ты узнаешь что-то каждый день, спасибо :)
Почему бы вам тогда не поместить скрипт между тегами скрипта? Нет необходимости кодировать его base64, и он будет меньше байтов, его будет легче обновлять и т. д.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


может быть, просто мысль, но, может быть, вместо "href" должно быть "src".
Спасибо, пример на сайте неправильный, и я никогда не думал об этом проверять.
Если вы проверите синтаксис тега скрипта, вы получите
<script src = "..."
^^^
src NOT href
Использование URI данных здесь не работает в IE 6, кстати.
Забавно, я работаю над той же проблемой: создаю скрипт Greasemonkey для добавления markItUp во все текстовые поля страницы.
Теперь у меня нет проблем с самим скриптом библиотеки. В любом случае, я не понимаю, почему вы хотите вставить его как Base64. Как уже отмечалось, он будет больше.
Вы можете поместить его прямо в сценарий GM, если хотите (некоторые люди делают это с помощью jQuery), или динамически добавить <script src = "someURL"></script> в документ и дождаться загрузки (в сети есть множество примеров этого) (неудобство: создает трафик на сайтах, содержащих файлы), или, как я сейчас пытаюсь, использовать последнюю (0.8) функцию GM:
// @require jquery.js
// @require markitup.js
// @resource miuStyle style.css
Необходимые файлы JS автоматически загружаются в сценарий GM из локальной копии, что быстро и всегда доступно. Не используйте упакованные версии, они здесь не работают. У меня также были проблемы с set.js, поэтому я просто вставил их прямо в скрипт. Работает хорошо, но у меня пока нет ни стиля, ни иконок. Я думаю, я должен поместить текст miuStyle на веб-страницу и изменить его так, чтобы все фоновые изображения ссылались на одно и то же изображение, размещенное на Photobucket или аналогичном, со смещением. Я не нашел способа использовать локальные изображения (в CSS), увы, даже с @resource.
Мой ответ, увы, не касается вашей проблемы (но замечание Джона кажется верным), но он может привести вас к другому, более простому решению.
Да, я просто попытался скопировать и вставить всю разметку, и это сработало. Я уже использую require для jquery, обслуживаемый из Google, но включаю разметку прямо в скрипт, потому что я не хочу обслуживать его со своего сервера. Стиль я добавляю тегом стиля в заголовок и изображениями в css base64.
Напоминание: @require загружает файл только один раз, когда установлен пользовательский скрипт. После этого он сохраняется в профиле пользователя на его жестком диске, и каждое использование сценария не влияет на сервер. Я подозревал, что могу использовать изображения в кодировке base64 в CSS, но я еще не изучал синтаксис.
Base-64 увеличивает размер файла, но делает его более читаемым для машины, поэтому фактически увеличивает скорость страницы. Я определенно понимаю, зачем вам это нужно, если только вы не хотите смотреть на 50 строк тарабарщины в своем файле. К вашему сведению, я только что прочитал исследование о том, что base 64 на самом деле загружается медленнее на мобильных устройствах, поэтому, если ваше приложение тяжелое для мобильных устройств, я бы держался подальше
Вопрос: Почему вы хотите кодировать скрипт в формате base64? Это увеличивает размер файла.