Вставить javascript как base64

Я работаю над небольшим скриптом 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');, поэтому я должен получить два предупреждения, но я вижу только одно, в котором предупреждение находится в виде текста внутри тега сценария.

Я что-то делаю не так или почему это не работает, есть идеи?

Вопрос: Почему вы хотите кодировать скрипт в формате base64? Это увеличивает размер файла.

some 20.12.2008 19:05

Собственно, понятия не имею. Я просто пытаюсь скопировать и вставить весь аддон jquery в нижнюю часть моего скрипта grease monkey, и это сработало нормально. Думаю, ты узнаешь что-то каждый день, спасибо :)

Daniel Johansson 20.12.2008 21:26

Почему бы вам тогда не поместить скрипт между тегами скрипта? Нет необходимости кодировать его base64, и он будет меньше байтов, его будет легче обновлять и т. д.

some 20.12.2008 21:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
13
3
16 872
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

может быть, просто мысль, но, может быть, вместо "href" должно быть "src".

Спасибо, пример на сайте неправильный, и я никогда не думал об этом проверять.

Daniel Johansson 20.12.2008 20:45

Если вы проверите синтаксис тега скрипта, вы получите

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

Daniel Johansson 20.12.2008 21:32

Напоминание: @require загружает файл только один раз, когда установлен пользовательский скрипт. После этого он сохраняется в профиле пользователя на его жестком диске, и каждое использование сценария не влияет на сервер. Я подозревал, что могу использовать изображения в кодировке base64 в CSS, но я еще не изучал синтаксис.

PhiLho 20.12.2008 22:35

Base-64 увеличивает размер файла, но делает его более читаемым для машины, поэтому фактически увеличивает скорость страницы. Я определенно понимаю, зачем вам это нужно, если только вы не хотите смотреть на 50 строк тарабарщины в своем файле. К вашему сведению, я только что прочитал исследование о том, что base 64 на самом деле загружается медленнее на мобильных устройствах, поэтому, если ваше приложение тяжелое для мобильных устройств, я бы держался подальше

Другие вопросы по теме