zoukankan      html  css  js  c++  java
  • 开发谷歌浏览器插件(原创)

    今天早上打开博客园.看到一文章"开发chrome扩展程序"
    自己看看,也还很简单,就自己动手写一个翻译插件

    来看看效果

    以前用谷歌的翻译接口做了一个翻译功能的网页http://liuju150.cacacoo.com

    所以我就打算把这个功能做成一个谷歌浏览器的插件
    这个翻译功能就一个页而.代码也很简单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>翻译</title>
    <style type="text/css">
    #MainTable
    {
        100%;
        text-align:center;
    }
    </style>
    <script type="text/javascript" src="http://www.google.com/jsapi?v=1&key=ABQIAAAACqGEg_EWjzyatp5DcvOejRR4W90b60fHZvOCS2noQmQiRb84KxQixoel7iEIiOVRigOQjXi2AyU3yQ"></script>
    <script language="javascript" type="text/javascript">
        google.load("language", "1");
        function BeginTranslate(isTxtTranslateSourceKeyUp) {
            var _txtTranslateSource = document.getElementById("txtTranslateSource");
            var _txtTranslateReturn = document.getElementById("txtTranslateReturn");
    
            //为空不翻译
            if (isTxtTranslateSourceKeyUp == true && _txtTranslateSource.value == "") {
                _txtTranslateReturn.value = "";
                return;
            } else if (isTxtTranslateSourceKeyUp == false && _txtTranslateReturn.value == "") {
                _txtTranslateSource.value = "";
                return;
            }
            var OldLanguage = document.getElementById("SelectLanguageOld").value;
            var NewLanguage = document.getElementById("SelectLanguageNew").value;
            if (isTxtTranslateSourceKeyUp == false) {
                var _Temp = OldLanguage;
                OldLanguage = NewLanguage;
                NewLanguage = _Temp;
            }
            
            var _text = "";
            if (isTxtTranslateSourceKeyUp == true) {
                _text = _txtTranslateSource.value;
            } else {
                _text = _txtTranslateReturn.value;
            }
    
            //检测是哪种语言
            if (OldLanguage == "auto") {
                google.language.detect(_text, function (res) {
                    if (!res.error) {
                        OldLanguage = res.language;
                        if (isTxtTranslateSourceKeyUp == true) {
                            document.getElementById("SelectLanguageOld").value = res.language;
                        } else {
                            document.getElementById("SelectLanguageNew").value = res.language;
                        }
                    }
                });
            }
    
            //要翻译成什么语言
            //此语言要明确,如果是自动检测的话,就自动换在中文
            if (NewLanguage == "auto") {
                NewLanguage = "zh-CN";
                if (isTxtTranslateSourceKeyUp == true) {
                    document.getElementById("SelectLanguageOld").value = NewLanguage;
                } else {
                    document.getElementById("SelectLanguageNew").value = NewLanguage;
                }
            }
    
            //相同判断
            if (OldLanguage == NewLanguage) {
                if (isTxtTranslateSourceKeyUp == true) {
                    _txtTranslateReturn.value = "请选择要翻译为什么语言";
                } else {
                    _txtTranslateSource.value = "请选择要翻译为什么语言";
                }
                return;
            }
    
            //是否支持此种语言的翻译
            if (google.language.isTranslatable(NewLanguage) == false) {
                if (isTxtTranslateSourceKeyUp == true) {
                    _txtTranslateReturn.value = "不支持此种语言的翻译";
                } else {
                    _txtTranslateSource.value = "不支持此种语言的翻译";
                }
                return;
            }
            
            //开始翻译
            google.language.translate({ "text": _text, "type": google.language.ContentType["TEXT"] }, OldLanguage, NewLanguage, function (result) {
                if (!result.error) {
                    var ReturnStr = result.translation;
                    if (isTxtTranslateSourceKeyUp == true) {
                        _txtTranslateReturn.value = ReturnStr;
                    } else {
                        _txtTranslateSource.value = ReturnStr;
                    }
                }
            });
        }
        google.setOnLoadCallback(function () { });
    </script>
    </head>
    <body>
    <div>
    <table id="MainTable">
        <tbody>
            <tr>
                <td align="right">
                    <select id="SelectLanguageOld" onchange="BeginTranslate(false)">
                        <option  value="auto">检测语言</option>
                        <option  value="sq">阿尔巴尼亚语</option>
                        <option  value="ar">阿拉伯语</option>
                        <option  value="az">阿塞拜疆语</option>
                        <option  value="ga">爱尔兰语</option>
                        <option  value="et">爱沙尼亚语</option>
                        <option  value="be">白俄罗斯语</option>
                        <option  value="bg">保加利亚语</option>
                        <option  value="is">冰岛语</option>
                        <option  value="pl">波兰语</option>
                        <option  value="fa">波斯语</option>
                        <option  value="af">布尔文(南非荷兰语)</option>
                        <option  value="da">丹麦语</option>
                        <option  value="de">德语</option>
                        <option  value="ru">俄语</option>
                        <option  value="fr">法语</option>
                        <option  value="tl">菲律宾语</option>
                        <option  value="fi">芬兰语</option>
                        <option  value="ka">格鲁吉亚语</option>
                        <option  value="ht">海地克里奥尔语</option>
                        <option  value="ko">韩语</option>
                        <option  value="nl">荷兰语</option>
                        <option  value="gl">加利西亚语</option>
                        <option  value="ca">加泰罗尼亚语</option>
                        <option  value="cs">捷克语</option>
                        <option  value="hr">克罗地亚语</option>
                        <option  value="lv">拉脱维亚语</option>
                        <option  value="lt">立陶宛语</option>
                        <option  value="ro">罗马尼亚语</option>
                        <option  value="mt">马耳他语</option>
                        <option  value="ms">马来语</option>
                        <option  value="mk">马其顿语</option>
                        <option  value="no">挪威语</option>
                        <option  value="pt">葡萄牙语</option>
                        <option  value="ja">日语</option>
                        <option  value="sv">瑞典语</option>
                        <option  value="sr">塞尔维亚语</option>
                        <option  value="sk">斯洛伐克语</option>
                        <option  value="sl">斯洛文尼亚语</option>
                        <option  value="sw">斯瓦希里语</option>
                        <option  value="th">泰语</option>
                        <option  value="tr">土耳其语</option>
                        <option  value="cy">威尔士语</option>
                        <option  value="uk">乌克兰语</option>
                        <option  value="eu">西班牙的巴斯克语</option>
                        <option  value="es">西班牙语</option>
                        <option  value="iw">希伯来语</option>
                        <option  value="el">希腊语</option>
                        <option  value="hu">匈牙利语</option>
                        <option  value="hy">亚美尼亚语</option>
                        <option  value="it">意大利语</option>
                        <option  value="yi">意第绪语</option>
                        <option  value="hi">印地语</option>
                        <option  value="ur">印度乌尔都语</option>
                        <option  value="id">印尼语</option>
                        <option  value="en">英语</option>
                        <option  value="vi">越南语</option>
                        <option  value="zh-CN" selected="selected">中文</option>
                    </select>
                </td>
                <td></td>
                <td align="left">
                    <select id="SelectLanguageNew" onchange="BeginTranslate(true)">
                        <option  value="auto">检测语言</option>
                        <option  value="sq">阿尔巴尼亚语</option>
                        <option  value="ar">阿拉伯语</option>
                        <option  value="az">阿塞拜疆语</option>
                        <option  value="ga">爱尔兰语</option>
                        <option  value="et">爱沙尼亚语</option>
                        <option  value="be">白俄罗斯语</option>
                        <option  value="bg">保加利亚语</option>
                        <option  value="is">冰岛语</option>
                        <option  value="pl">波兰语</option>
                        <option  value="fa">波斯语</option>
                        <option  value="af">布尔文(南非荷兰语)</option>
                        <option  value="da">丹麦语</option>
                        <option  value="de">德语</option>
                        <option  value="ru">俄语</option>
                        <option  value="fr">法语</option>
                        <option  value="tl">菲律宾语</option>
                        <option  value="fi">芬兰语</option>
                        <option  value="ka">格鲁吉亚语</option>
                        <option  value="ht">海地克里奥尔语</option>
                        <option  value="ko">韩语</option>
                        <option  value="nl">荷兰语</option>
                        <option  value="gl">加利西亚语</option>
                        <option  value="ca">加泰罗尼亚语</option>
                        <option  value="cs">捷克语</option>
                        <option  value="hr">克罗地亚语</option>
                        <option  value="lv">拉脱维亚语</option>
                        <option  value="lt">立陶宛语</option>
                        <option  value="ro">罗马尼亚语</option>
                        <option  value="mt">马耳他语</option>
                        <option  value="ms">马来语</option>
                        <option  value="mk">马其顿语</option>
                        <option  value="no">挪威语</option>
                        <option  value="pt">葡萄牙语</option>
                        <option  value="ja">日语</option>
                        <option  value="sv">瑞典语</option>
                        <option  value="sr">塞尔维亚语</option>
                        <option  value="sk">斯洛伐克语</option>
                        <option  value="sl">斯洛文尼亚语</option>
                        <option  value="sw">斯瓦希里语</option>
                        <option  value="th">泰语</option>
                        <option  value="tr">土耳其语</option>
                        <option  value="cy">威尔士语</option>
                        <option  value="uk">乌克兰语</option>
                        <option  value="eu">西班牙的巴斯克语</option>
                        <option  value="es">西班牙语</option>
                        <option  value="iw">希伯来语</option>
                        <option  value="el">希腊语</option>
                        <option  value="hu">匈牙利语</option>
                        <option  value="hy">亚美尼亚语</option>
                        <option  value="it">意大利语</option>
                        <option  value="yi">意第绪语</option>
                        <option  value="hi">印地语</option>
                        <option  value="ur">印度乌尔都语</option>
                        <option  value="id">印尼语</option>
                        <option  value="en" selected="selected">英语</option>
                        <option  value="vi">越南语</option>
                        <option  value="zh-TW">中文(繁体)</option>
                        <option  value="zh-CN">中文(简体)</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td align="right"><textarea id="txtTranslateSource" rows="8" cols="30"></textarea></td>
                <td>
                    <button title="从左到右翻译" onclick="BeginTranslate(true)">>></button>
                    <br />
                    <br />
                    <button title="从右到左翻译" onclick="BeginTranslate(false)"><<</button>
                </td>
                <td align="left"><textarea id="txtTranslateReturn" rows="8" cols="30"></textarea></td>
            </tr>
        </tbody>
    </table>
    </div>
    <script language="javascript" type="text/javascript">
        var timer;
        document.getElementById("txtTranslateSource").onkeyup = function () {
            if (timer != null) {
                clearTimeout(timer);
            }
            timer = setTimeout("BeginTranslate(true)", 1000);
        };
        document.getElementById("txtTranslateReturn").onkeyup = function () {
            if (timer != null) {
                clearTimeout(timer);
            }
            timer = setTimeout("BeginTranslate(false)", 1000);
        };
    </script>
    </body>
    </html>
    
    

    然后看看谷歌的插件文档
    在C盘下创建了一个文件夹C:\GoogleDemo


    然后把那个网页放到文件夹里面index.html

    然后在这个文件夹里面自己创建一个manifest.json文件

    文件内容

    { 
      "name": "Translation(翻译)",
      "version": "1.1",
      "description": "This is a translation plug-in, you can translate between many languages(这是一个翻译插件,可以在很多种语言之间相互翻译)",
      "icons":{"16":"16.png","48":"48.png","128":"128.png"},
      "browser_action": {
        	"default_icon": "16.png",
          "popup": "index.html"
      }, 
      "permissions": ["http://*/","bookmarks","tabs","history"] 
    }
    

    自己做了几个PNG图标,主要是做插件在浏览器上的图标用,就是浏览器右上角看到我插件的那个图标
    然后打开谷歌浏览器输入地址:chrome://extensions/

     开始没有看到我这个插件的,这是我安装上去的效果,
    开始的话,选择第一个按钮,就会要你选择你插件所在的文件夹,这里我们选择C:\GoogleDemo
    他就会自己载入我们的插件,

    然后再选择第二个按钮
     

    第一次可以不选择第二个文件,因为第一次他会自己生成一个GoogleDemo.pem这样的文件

    以后你更新了的话.就要选择了,他就知道是在这个插件上的更新,而不是一个新的插件
    完成后.就可以在你的谷歌浏览器里看到这个翻译插件了 
    DEMO下载 

  • 相关阅读:
    Tomcat搭建Web 应用服务器
    前端代码的开发标准和规范
    全局关键字搜索:Element UI Table内容过滤jQuery过滤器fastLiveFilter插件BootstrapVue插件;
    Highchartsjs使用总结及实时动态刷新图
    百度统计微信网站绑定(vue项目)
    对Vuejs框架原理名词解读
    xml
    webservice
    类加载器
    引入spring时 XML文档中的xmlns、xmlns:xsi和xsi:schemaLocation
  • 原文地址:https://www.cnblogs.com/liuju150/p/Google_chrome_Extensions_Translation.html
Copyright © 2011-2022 走看看