加载内容脚本的扩展程序在发布到chrome网站商店时会触发警告

我想将Chrome扩展程序的脚本拆分为多个文件。为此,据我了解,我需要在清单文件中添加一个“ content_scripts”属性。当我发布到Chrome网上应用店时,我收到一条警告消息,提示我的扩展程序需要广泛的权限,并且审阅该扩展程序将花费更多时间,并且最好以其他方式进行操作。

最初,我只有一个js文件,其中包含数据和函数。我不喜欢这样,所以我想为数据和功能使用单独的js文件。因此,我将数据带到一个新的data.js文件中,而我发现使其起作用的唯一方法是在清单文件中具有一个“ content_script”属性。

"content_scripts": [
    {
        "matches": ["<all_urls>"],"js": ["data.js"]
    }
],

似乎需要“ matches”属性。我的理解是,该值会导致Chrome商店警告我这是过多的权限。他们建议我改用“ permissions”:[“ activetab”]。但是我已经在清单中看到了。因此,我对如何添加内容脚本而不需要附加权限感到有些困惑,因为它只是另一个嵌入式js文件,而且我不明白为什么它比原始背景javascript文件需要更多的权限。 / p>

qq961279346 回答:加载内容脚本的扩展程序在发布到chrome网站商店时会触发警告

最后,我通过从后台脚本中引用几个单独的js文件来进行管理:

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

public class StringOccurence {

public static void main(String args[]) {

    String[] stringArray = { "name1","name1","name2","name2" };
    countStringOccurence(stringArray);
    countStringOccurenceUsingStream(stringArray);
    countStringOccurenceUsingCollections(stringArray);
}

private static void countStringOccurenceUsingCollections(String[] stringArray) {
    // TODO Auto-generated method stub
    List<String> asList = Arrays.asList(stringArray);
    Set<String> set = new HashSet<String>(asList);
    for (String string : set) {
        System.out.println(string + "   -->   " + Collections.frequency(asList,string));
    }

}

private static void countStringOccurenceUsingStream(String[] stringArray) {
    // TODO Auto-generated method stub
    Arrays.stream(stringArray).collect(Collectors.groupingBy(s -> s))
            .forEach((k,v) -> System.out.println(k + "   -->   " + v.size()));
}

private static void countStringOccurence(String[] stringArray) {
    // TODO Auto-generated method stub
    Map<String,Integer> map = new HashMap<String,Integer>();
    for (String s : stringArray) {
        if (map.containsKey(s)) {
            map.put(s,map.get(s) + 1);
        } else {
            map.put(s,1);
        }
    }

    for (Map.Entry<String,Integer> entry : map.entrySet()) {
        System.out.println(entry.getKey() + "   -->   " + entry.getValue());
    }

}

它可以正常工作,并且不会导致Chrome网上应用店提示权限警告。因此,这似乎是我打算做的更好的方法。

本文链接:https://www.f2er.com/3153115.html

大家都在问