Page-Mod не-HTML файлов - PullRequest
       9

Page-Mod не-HTML файлов

1 голос
/ 29 декабря 2011

Я пытаюсь начать писать простое дополнение к Firefox, которое позволяет правильно отображать файлы уценки.

К сожалению, я даже не могу заставить работать первый шаг процесса.

У меня есть некоторый базовый код:

var pageMod = require("page-mod");
pageMod.PageMod({
  include: [/.*.md/, /.*.markdown/],
  contentScriptWhen: 'end',
  contentScript: 'window.alert("Page opened");'
});

Но он не срабатывает при открытии такого файла, локально или с сервера.

Даже при простом include: ['*'] появляется предупреждениезапускается на каждой странице, которую я посещаю, за исключением случаев, когда я открываю файл не в формате HTML.

Итак, как, если это вообще возможно, я могу ориентироваться на текстовые файлы или другие файлы не в формате HTML, получать их содержимое или писать новые?содержание в них?

1 Ответ

2 голосов
/ 30 декабря 2011

Этот (несколько хакерский) код работает для меня.

Main.js:

var data = require("self").data;
var tabs = require("tabs");

tabs.on('ready', function(tab) {
    if (/\.(md|markdown)$/.test(tab.url)) {
        console.log('got markdown!');

        // get the markdown content
        require('request').Request({
            url: tab.url,
            onComplete: function(response) {
                var md = response.text;
                var worker = tab.attach({
                    contentScriptFile: [data.url('markdown.js'), data.url('preview.js')]
                });

                worker.port.emit('init', {raw: response.text});
            }
        }).get();
    }
});

tabs.open('https://raw.github.com/canuckistani/open-in-c9-extension/master/README.md');

preview.js:

self.port.on('init', function(data) {
    unsafeWindow.document.body.innerHTML = markdown.toHTML(data.raw);
});

Что я делаю, так это извлекаю необработанный текст уценки во втором http-запросе, обрабатываю его с помощью markdown.js и вставляю его на страницу. Определенно хакерский бит - это второй http-запрос.

Вот рабочий пример на строителе:

https://builder.addons.mozilla.org/addon/1031582/latest/

...