Встраивание 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'); поэтому я должен получить два предупреждения, но единственный, который я вижу, - это второй, где предупреждение расположено как текст внутри тега скрипта.

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

4 ответов


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


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

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

использование URIs данных здесь не работает в IE 6 btw.


это забавно, я работаю над точно такой же проблемой: создание скрипта 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.


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