如何判断脚本是作为内容脚本还是作为后台脚本运行?

Rya*_* Li 4 google-chrome-extension

在 Chrome 扩展程序中,脚本可能被包含为内容脚本或后台脚本。它所做的大多数事情都是相同的,但有一些会根据不同的上下文而有所不同。

问题是,脚本如何知道它在哪个上下文中运行?谢谢你。

jda*_*net 5

我认为这是一个相当健壮的版本,在我的初始测试中工作并且不需要较慢的 try catch,并且它至少标识了 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(':','');
        }
    }
};
Run Code Online (Sandbox Code Playgroud)