Как определить, выполняется ли сценарий как сценарий содержимого или как фоновый сценарий? - PullRequest
4 голосов
/ 16 декабря 2010

В расширении Chrome сценарий может быть включен в качестве сценария содержимого или фонового сценария. Большинство вещей, которые он делает, одинаковы, но некоторые из них могут отличаться в зависимости от контекста.

Вопрос в том, как скрипт может определить, в каком контексте он запускается? Спасибо.

Ответы [ 3 ]

4 голосов
/ 14 февраля 2013

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

av = {};
av.Env = {
    isChromeExt: function(){
        return !!(window['chrome'] && window['chrome']['extension'])
    },
    getContext: function(){
        var loc = window.location.href;
        if(!!(window['chrome'] && window['chrome']['extension'])){
            if(/^chrome/.test(loc)){
                if(window == chrome.extension.getBackgroundPage()){
                    return 'background';
                }else{
                    return 'extension';
                }
            }else if( /^https?/.test(loc) ){
                return 'content';
            }
        }else{
            return window.location.protocol.replace(':','');
        }
    }
};
2 голосов
/ 16 декабря 2010

Ну, мне удалось решить это:

var scriptContext = function() {
    try {
        if (chrome.bookmarks) {
            return "background";
        }
        else {
            return "content";
        }
    }
    catch (e) {
        return "content";
    }
}

Это потому, что исключение будет выдано, если скрипт содержимого попытается получить доступ к деталям chrome. *, Кроме chrome.extension.

Ссылка: http://code.google.com/chrome/extensions/content_scripts.html

0 голосов
/ 18 декабря 2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...