2015-09-07 2 views
0

Как заменить любую страницу, например http://google.com/ на мою страницу (я не хочу перенаправлять), включая <head>?{jpm} Как заменить любую страницу?

Я попытался это:

// Import the page-mod API 
var pageMod = require("sdk/page-mod"); 

// Create a page-mod 
// It will run a script whenever a ".io" URL is loaded 
// The script replaces the page contents with a message 
pageMod.PageMod({ 
    include: "*.io", 
    contentScript: 'document.body.innerHTML = ' + 
       ' "<h1>Page matches ruleset</h1>";' 
}); 

Но это не заменяет целую страницу. Я хочу также заменить head. Я хочу заменить страницу до загрузки страницы ...

ответ

1

Используя document.head.innerHTML, вы можете обратиться к заголовку html-страницы, что позволяет установить в нем содержимое.

Также стоит отметить, что API-интерфейс страницы может принимать multiple arguments as an array of string literals, а также возможность импорта скриптов из каталога данных.

И, наконец, вы можете установить скрипт для запуска до загрузки страницы, установив page-mod OptioncontentScriptWhen к значению start или ready.

согласно документации:

«старт»: скрипты для загрузки содержимого сразу же после того, как элемент документа вставляется в DOM, но прежде, чем содержание DOM сам были загружены

«готов »: Загрузите скрипты содержимого после загрузки содержимого DOM, , соответствующего событию DOMContentLoaded

« конец »: загрузите скрипты содержимого после того, как все содержимое (DOM, JS, CSS,)изображений) были загружены, в то время события window.onload пожаров

Так что ваш пример для изменения как заголовка и тела до загрузки страницы будет похожи на ниже:

// Import the page-mod API 
var pageMod = require("sdk/page-mod"); 

// Create a page-mod 
// It will run a script whenever a ".org" URL is loaded 
// The script replaces the page contents with a message 
pageMod.PageMod({ 
    include: "*.io", 
    contentScript: ['document.body.innerHTML = ' + 
       ' "<h1>foo</h1>"', 
       'document.head.innerHTML = ' + 
       ' "<style>h1 {color:blue;}</style>";'], 
    contentScriptWhen: "start" 
}); 

Также стоит отметить, что этот сценарий может работать лучше для некоторых страниц, если contentScriptWhen установлен в ready, в противном случае изменения могут не распространяться на все элементы на странице.

+0

И как я могу его освободить до загрузки страницы? –

+0

Только что отредактировал ответ на обновление. Извини за это. – Diggzy

Смежные вопросы