├── ttt.txt ├── test.txt ├── test.zip ├── URLMaster2.0.crx ├── wordament-32.rar ├── wordament-64.rar ├── ElementBlurTool.crx ├── ElementBlurTool 2.0.crx ├── Lofter标签批量添加器 ├── tags.txt ├── 功能说明文档.txt ├── 效果图1.png ├── 浏览器截图1.png ├── 浏览器截图2.png ├── 展示图标png128.png └── LofterTagtool1.0.crx ├── URLMaster ├── icons │ ├── icon.png │ ├── icon16.png │ ├── icon48.png │ └── icon128.png ├── content_scripts │ └── cscript.js ├── background │ ├── background.html │ └── bg.js ├── manifest.json └── popup │ ├── options.js │ ├── options.html │ └── styles │ └── options.css ├── devTool ├── icons │ ├── abp-16.png │ ├── abp-19.png │ ├── abp-20.png │ ├── abp-32.png │ ├── abp-38.png │ ├── abp-40.png │ ├── detailed │ │ ├── abp-128.png │ │ ├── abp-32.png │ │ ├── abp-48.png │ │ └── abp-64.png │ ├── abp-16-whitelisted.png │ ├── abp-19-whitelisted.png │ ├── abp-20-whitelisted.png │ ├── abp-32-whitelisted.png │ ├── abp-38-whitelisted.png │ ├── abp-40-whitelisted.png │ ├── abp-16-notification-critical.png │ ├── abp-19-notification-critical.png │ ├── abp-20-notification-critical.png │ ├── abp-32-notification-critical.png │ ├── abp-38-notification-critical.png │ ├── abp-40-notification-critical.png │ ├── abp-16-notification-information.png │ ├── abp-19-notification-information.png │ ├── abp-20-notification-information.png │ ├── abp-32-notification-information.png │ ├── abp-38-notification-information.png │ └── abp-40-notification-information.png ├── skin │ ├── donate.png │ ├── popup.png │ ├── abb-logo.png │ ├── ajax-loader.gif │ ├── background.png │ ├── social │ │ ├── weibo.png │ │ ├── renren.png │ │ ├── twitter.png │ │ ├── facebook.png │ │ └── googleplus.png │ ├── background-main.png │ ├── background-share.png │ ├── fonts │ │ ├── CreteRound-Italic.otf │ │ └── CreteRound-Regular.otf │ └── common.css ├── jquery-ui │ └── css │ │ └── smoothness │ │ └── images │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_888888_256x240.png │ │ ├── ui-icons_cd0a0a_256x240.png │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png ├── managed-storage-schema.json ├── ext │ ├── popup.js │ ├── content.js │ ├── devtools.js │ └── common.js ├── utils.js ├── devtools.html ├── qunit │ └── index.html ├── _locales │ ├── am │ │ └── messages.json │ ├── sw │ │ └── messages.json │ └── ml │ │ └── messages.json ├── lib │ └── info.js ├── devtools.js ├── background.js ├── manifest.json ├── composer.js ├── composer.html ├── notification.js ├── devtools-panel.html ├── popup.html ├── firstRun.html ├── firstRun.js ├── i18n.js ├── stats.js ├── common.js └── popup.js ├── googleTranslateUpper.crx ├── Lofter tags tool ├── tags.txt ├── ReadMe.txt ├── Display icon128.png ├── Screen capture1.png ├── Screen capture2.png ├── effect drawing1.png └── LofterTagtool1.0.crx ├── README.md ├── ElementBlurTool ├── icons │ ├── icon.png │ ├── icon128.png │ ├── icon16.png │ ├── icon48.png │ └── icon48_disabled.png ├── manifest.json ├── content_scripts │ └── cscript.js ├── background │ └── myscript.js └── popup │ ├── options.html │ ├── options.js │ └── styles │ └── options.css ├── chartroom └── site │ ├── www │ ├── favicon.ico │ ├── content │ │ ├── logo.png │ │ └── emoji │ │ │ ├── 1.gif │ │ │ ├── 10.gif │ │ │ ├── 11.gif │ │ │ ├── 12.gif │ │ │ ├── 13.gif │ │ │ ├── 14.gif │ │ │ ├── 15.gif │ │ │ ├── 16.gif │ │ │ ├── 17.gif │ │ │ ├── 18.gif │ │ │ ├── 19.gif │ │ │ ├── 2.gif │ │ │ ├── 20.gif │ │ │ ├── 21.gif │ │ │ ├── 22.gif │ │ │ ├── 23.gif │ │ │ ├── 24.gif │ │ │ ├── 25.gif │ │ │ ├── 26.gif │ │ │ ├── 27.gif │ │ │ ├── 28.gif │ │ │ ├── 29.gif │ │ │ ├── 3.gif │ │ │ ├── 30.gif │ │ │ ├── 31.gif │ │ │ ├── 32.gif │ │ │ ├── 33.gif │ │ │ ├── 34.gif │ │ │ ├── 35.gif │ │ │ ├── 36.gif │ │ │ ├── 37.gif │ │ │ ├── 38.gif │ │ │ ├── 39.gif │ │ │ ├── 4.gif │ │ │ ├── 40.gif │ │ │ ├── 41.gif │ │ │ ├── 42.gif │ │ │ ├── 43.gif │ │ │ ├── 44.gif │ │ │ ├── 45.gif │ │ │ ├── 46.gif │ │ │ ├── 47.gif │ │ │ ├── 48.gif │ │ │ ├── 49.gif │ │ │ ├── 5.gif │ │ │ ├── 50.gif │ │ │ ├── 51.gif │ │ │ ├── 52.gif │ │ │ ├── 53.gif │ │ │ ├── 54.gif │ │ │ ├── 55.gif │ │ │ ├── 56.gif │ │ │ ├── 57.gif │ │ │ ├── 58.gif │ │ │ ├── 59.gif │ │ │ ├── 6.gif │ │ │ ├── 60.gif │ │ │ ├── 61.gif │ │ │ ├── 62.gif │ │ │ ├── 63.gif │ │ │ ├── 64.gif │ │ │ ├── 65.gif │ │ │ ├── 66.gif │ │ │ ├── 67.gif │ │ │ ├── 68.gif │ │ │ ├── 69.gif │ │ │ ├── 7.gif │ │ │ ├── 8.gif │ │ │ └── 9.gif │ ├── public │ │ ├── favicon.ico │ │ ├── styles │ │ │ ├── images │ │ │ │ ├── black.png │ │ │ │ ├── panel.png │ │ │ │ ├── white.png │ │ │ │ ├── location.gif │ │ │ │ └── location.png │ │ │ ├── panel.css │ │ │ ├── test.less │ │ │ ├── main.copy.css │ │ │ └── main.css │ │ └── scripts │ │ │ ├── jquery.ui.touch-punch.min.js │ │ │ └── game.js │ ├── styles │ │ ├── images │ │ │ ├── black.png │ │ │ ├── panel.png │ │ │ ├── white.png │ │ │ ├── location.gif │ │ │ └── location.png │ │ ├── panel.css │ │ ├── test.less │ │ ├── main.copy.css │ │ └── main.css │ ├── views │ │ ├── test.handlebars │ │ └── layouts │ │ │ └── main.handlebars │ ├── scripts │ │ ├── jquery.ui.touch-punch.min.js │ │ └── game.js │ ├── test.html │ └── index.html │ ├── public │ ├── favicon.ico │ ├── styles │ │ ├── images │ │ │ ├── black.png │ │ │ ├── panel.png │ │ │ ├── white.png │ │ │ ├── location.gif │ │ │ └── location.png │ │ ├── panel.css │ │ ├── test.less │ │ ├── main.copy.css │ │ └── main.css │ └── scripts │ │ ├── jquery.ui.touch-punch.min.js │ │ └── game.js │ ├── views │ ├── test.handlebars │ ├── layouts │ │ └── main.handlebars │ └── index.handlebars │ ├── package.json │ ├── server.js │ └── newserver.js ├── googleTranslate ├── icons │ ├── icon.png │ ├── icon128.png │ ├── icon16.png │ └── icon48.png ├── manifest.json └── myscript.js ├── googleTranslateUpper ├── icons │ ├── icon.png │ ├── icon128.png │ ├── icon16.png │ ├── icon48.png │ └── icon48_disabled.png ├── manifest.json ├── popup │ ├── options.js │ ├── options.html │ └── styles │ │ └── options.css ├── contentscript │ └── googlefanyitip.css └── background │ └── background.js └── two.js └── two.js.api └── Two.js_files ├── text.gif ├── puzzle.gif ├── campfire.gif ├── epigram.gif ├── gradients.gif ├── physics.gif ├── typatone.gif ├── collisions.gif ├── larepenger.gif ├── chris-delbuck.gif ├── clipping-mask.gif ├── point-on-curve.gif ├── signum.js.下载 └── css /ttt.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test.txt: -------------------------------------------------------------------------------- 1 | AAA -------------------------------------------------------------------------------- /test.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/test.zip -------------------------------------------------------------------------------- /URLMaster2.0.crx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/URLMaster2.0.crx -------------------------------------------------------------------------------- /wordament-32.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/wordament-32.rar -------------------------------------------------------------------------------- /wordament-64.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/wordament-64.rar -------------------------------------------------------------------------------- /ElementBlurTool.crx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/ElementBlurTool.crx -------------------------------------------------------------------------------- /ElementBlurTool 2.0.crx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/ElementBlurTool 2.0.crx -------------------------------------------------------------------------------- /Lofter标签批量添加器/tags.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter标签批量添加器/tags.txt -------------------------------------------------------------------------------- /Lofter标签批量添加器/功能说明文档.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter标签批量添加器/功能说明文档.txt -------------------------------------------------------------------------------- /Lofter标签批量添加器/效果图1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter标签批量添加器/效果图1.png -------------------------------------------------------------------------------- /Lofter标签批量添加器/浏览器截图1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter标签批量添加器/浏览器截图1.png -------------------------------------------------------------------------------- /Lofter标签批量添加器/浏览器截图2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter标签批量添加器/浏览器截图2.png -------------------------------------------------------------------------------- /URLMaster/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/URLMaster/icons/icon.png -------------------------------------------------------------------------------- /devTool/icons/abp-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-16.png -------------------------------------------------------------------------------- /devTool/icons/abp-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-19.png -------------------------------------------------------------------------------- /devTool/icons/abp-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-20.png -------------------------------------------------------------------------------- /devTool/icons/abp-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-32.png -------------------------------------------------------------------------------- /devTool/icons/abp-38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-38.png -------------------------------------------------------------------------------- /devTool/icons/abp-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-40.png -------------------------------------------------------------------------------- /devTool/skin/donate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/donate.png -------------------------------------------------------------------------------- /devTool/skin/popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/popup.png -------------------------------------------------------------------------------- /googleTranslateUpper.crx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslateUpper.crx -------------------------------------------------------------------------------- /Lofter tags tool/tags.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter tags tool/tags.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Projects 2 | Projects,include website project, chrome extension project,etc 3 | 该目录下包含网站项目,谷歌插件等 -------------------------------------------------------------------------------- /URLMaster/icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/URLMaster/icons/icon16.png -------------------------------------------------------------------------------- /URLMaster/icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/URLMaster/icons/icon48.png -------------------------------------------------------------------------------- /devTool/skin/abb-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/abb-logo.png -------------------------------------------------------------------------------- /Lofter tags tool/ReadMe.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter tags tool/ReadMe.txt -------------------------------------------------------------------------------- /Lofter标签批量添加器/展示图标png128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter标签批量添加器/展示图标png128.png -------------------------------------------------------------------------------- /URLMaster/icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/URLMaster/icons/icon128.png -------------------------------------------------------------------------------- /devTool/skin/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/ajax-loader.gif -------------------------------------------------------------------------------- /devTool/skin/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/background.png -------------------------------------------------------------------------------- /devTool/skin/social/weibo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/social/weibo.png -------------------------------------------------------------------------------- /ElementBlurTool/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/ElementBlurTool/icons/icon.png -------------------------------------------------------------------------------- /chartroom/site/www/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/favicon.ico -------------------------------------------------------------------------------- /devTool/skin/social/renren.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/social/renren.png -------------------------------------------------------------------------------- /devTool/skin/social/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/social/twitter.png -------------------------------------------------------------------------------- /googleTranslate/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslate/icons/icon.png -------------------------------------------------------------------------------- /ElementBlurTool/icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/ElementBlurTool/icons/icon128.png -------------------------------------------------------------------------------- /ElementBlurTool/icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/ElementBlurTool/icons/icon16.png -------------------------------------------------------------------------------- /ElementBlurTool/icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/ElementBlurTool/icons/icon48.png -------------------------------------------------------------------------------- /Lofter标签批量添加器/LofterTagtool1.0.crx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter标签批量添加器/LofterTagtool1.0.crx -------------------------------------------------------------------------------- /chartroom/site/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/public/favicon.ico -------------------------------------------------------------------------------- /devTool/icons/detailed/abp-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/detailed/abp-128.png -------------------------------------------------------------------------------- /devTool/icons/detailed/abp-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/detailed/abp-32.png -------------------------------------------------------------------------------- /devTool/icons/detailed/abp-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/detailed/abp-48.png -------------------------------------------------------------------------------- /devTool/icons/detailed/abp-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/detailed/abp-64.png -------------------------------------------------------------------------------- /devTool/skin/background-main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/background-main.png -------------------------------------------------------------------------------- /devTool/skin/background-share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/background-share.png -------------------------------------------------------------------------------- /devTool/skin/social/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/social/facebook.png -------------------------------------------------------------------------------- /devTool/skin/social/googleplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/social/googleplus.png -------------------------------------------------------------------------------- /googleTranslate/icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslate/icons/icon128.png -------------------------------------------------------------------------------- /googleTranslate/icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslate/icons/icon16.png -------------------------------------------------------------------------------- /googleTranslate/icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslate/icons/icon48.png -------------------------------------------------------------------------------- /Lofter tags tool/Display icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter tags tool/Display icon128.png -------------------------------------------------------------------------------- /Lofter tags tool/Screen capture1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter tags tool/Screen capture1.png -------------------------------------------------------------------------------- /Lofter tags tool/Screen capture2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter tags tool/Screen capture2.png -------------------------------------------------------------------------------- /Lofter tags tool/effect drawing1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter tags tool/effect drawing1.png -------------------------------------------------------------------------------- /chartroom/site/www/content/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/logo.png -------------------------------------------------------------------------------- /devTool/icons/abp-16-whitelisted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-16-whitelisted.png -------------------------------------------------------------------------------- /devTool/icons/abp-19-whitelisted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-19-whitelisted.png -------------------------------------------------------------------------------- /devTool/icons/abp-20-whitelisted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-20-whitelisted.png -------------------------------------------------------------------------------- /devTool/icons/abp-32-whitelisted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-32-whitelisted.png -------------------------------------------------------------------------------- /devTool/icons/abp-38-whitelisted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-38-whitelisted.png -------------------------------------------------------------------------------- /devTool/icons/abp-40-whitelisted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-40-whitelisted.png -------------------------------------------------------------------------------- /googleTranslateUpper/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslateUpper/icons/icon.png -------------------------------------------------------------------------------- /Lofter tags tool/LofterTagtool1.0.crx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/Lofter tags tool/LofterTagtool1.0.crx -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/1.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/10.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/11.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/12.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/13.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/14.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/15.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/16.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/17.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/18.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/19.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/2.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/20.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/21.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/22.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/23.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/24.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/25.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/26.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/27.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/28.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/29.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/3.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/30.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/31.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/32.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/33.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/34.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/35.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/36.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/37.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/38.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/39.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/4.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/40.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/41.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/42.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/43.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/44.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/45.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/46.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/47.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/48.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/49.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/5.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/50.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/51.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/52.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/53.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/54.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/55.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/56.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/57.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/58.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/59.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/6.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/60.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/61.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/62.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/63.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/64.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/65.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/66.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/67.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/68.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/69.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/7.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/8.gif -------------------------------------------------------------------------------- /chartroom/site/www/content/emoji/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/content/emoji/9.gif -------------------------------------------------------------------------------- /chartroom/site/www/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/public/favicon.ico -------------------------------------------------------------------------------- /googleTranslateUpper/icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslateUpper/icons/icon128.png -------------------------------------------------------------------------------- /googleTranslateUpper/icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslateUpper/icons/icon16.png -------------------------------------------------------------------------------- /googleTranslateUpper/icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslateUpper/icons/icon48.png -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/text.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/text.gif -------------------------------------------------------------------------------- /ElementBlurTool/icons/icon48_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/ElementBlurTool/icons/icon48_disabled.png -------------------------------------------------------------------------------- /devTool/skin/fonts/CreteRound-Italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/fonts/CreteRound-Italic.otf -------------------------------------------------------------------------------- /devTool/skin/fonts/CreteRound-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/skin/fonts/CreteRound-Regular.otf -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/puzzle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/puzzle.gif -------------------------------------------------------------------------------- /chartroom/site/www/styles/images/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/styles/images/black.png -------------------------------------------------------------------------------- /chartroom/site/www/styles/images/panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/styles/images/panel.png -------------------------------------------------------------------------------- /chartroom/site/www/styles/images/white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/styles/images/white.png -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/campfire.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/campfire.gif -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/epigram.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/epigram.gif -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/gradients.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/gradients.gif -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/physics.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/physics.gif -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/typatone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/typatone.gif -------------------------------------------------------------------------------- /chartroom/site/public/styles/images/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/public/styles/images/black.png -------------------------------------------------------------------------------- /chartroom/site/public/styles/images/panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/public/styles/images/panel.png -------------------------------------------------------------------------------- /chartroom/site/public/styles/images/white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/public/styles/images/white.png -------------------------------------------------------------------------------- /chartroom/site/views/test.handlebars: -------------------------------------------------------------------------------- 1 |

Test

2 | 3 | -------------------------------------------------------------------------------- /chartroom/site/www/styles/images/location.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/styles/images/location.gif -------------------------------------------------------------------------------- /chartroom/site/www/styles/images/location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/styles/images/location.png -------------------------------------------------------------------------------- /devTool/icons/abp-16-notification-critical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-16-notification-critical.png -------------------------------------------------------------------------------- /devTool/icons/abp-19-notification-critical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-19-notification-critical.png -------------------------------------------------------------------------------- /devTool/icons/abp-20-notification-critical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-20-notification-critical.png -------------------------------------------------------------------------------- /devTool/icons/abp-32-notification-critical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-32-notification-critical.png -------------------------------------------------------------------------------- /devTool/icons/abp-38-notification-critical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-38-notification-critical.png -------------------------------------------------------------------------------- /devTool/icons/abp-40-notification-critical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-40-notification-critical.png -------------------------------------------------------------------------------- /googleTranslateUpper/icons/icon48_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/googleTranslateUpper/icons/icon48_disabled.png -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/collisions.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/collisions.gif -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/larepenger.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/larepenger.gif -------------------------------------------------------------------------------- /chartroom/site/public/styles/images/location.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/public/styles/images/location.gif -------------------------------------------------------------------------------- /chartroom/site/public/styles/images/location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/public/styles/images/location.png -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/images/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/public/styles/images/black.png -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/images/panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/public/styles/images/panel.png -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/images/white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/public/styles/images/white.png -------------------------------------------------------------------------------- /devTool/icons/abp-16-notification-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-16-notification-information.png -------------------------------------------------------------------------------- /devTool/icons/abp-19-notification-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-19-notification-information.png -------------------------------------------------------------------------------- /devTool/icons/abp-20-notification-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-20-notification-information.png -------------------------------------------------------------------------------- /devTool/icons/abp-32-notification-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-32-notification-information.png -------------------------------------------------------------------------------- /devTool/icons/abp-38-notification-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-38-notification-information.png -------------------------------------------------------------------------------- /devTool/icons/abp-40-notification-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/icons/abp-40-notification-information.png -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/chris-delbuck.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/chris-delbuck.gif -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/clipping-mask.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/clipping-mask.gif -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/point-on-curve.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/two.js/two.js.api/Two.js_files/point-on-curve.gif -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/images/location.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/public/styles/images/location.gif -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/images/location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/chartroom/site/www/public/styles/images/location.png -------------------------------------------------------------------------------- /chartroom/site/www/views/test.handlebars: -------------------------------------------------------------------------------- 1 |

About Meadowlark Travel

2 |

Your fortune for the day:

3 |
{{fortune}}
4 | Contact Us -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /devTool/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charrywong/Projects/HEAD/devTool/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /URLMaster/content_scripts/cscript.js: -------------------------------------------------------------------------------- 1 | //这是content_scripts 2 | /** 3 | 只有一个功能,就是获取当前页面的url 4 | */ 5 | //BEGIN 6 | $(function () { 7 | var currenturl = window.location.href; 8 | chrome.runtime.sendMessage({ 9 | "url" : currenturl 10 | }); 11 | }); -------------------------------------------------------------------------------- /devTool/managed-storage-schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "suppress_first_run_page": { 5 | "type": "boolean" 6 | }, 7 | "additional_subscriptions": { 8 | "type": "array", 9 | "items": { 10 | "type": "string" 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /URLMaster/background/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Document 6 | 7 | 8 | 9 | 10 |
hahaha
11 | 12 | -------------------------------------------------------------------------------- /chartroom/site/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hichat", 3 | "description": "a realtime chat web application", 4 | "version": "0.4.0", 5 | "main": "server.js", 6 | "dependencies": { 7 | "express": "3.4.x", 8 | "socket.io": "0.9.x" 9 | }, 10 | "engines": { 11 | "node": "0.10.x", 12 | "npm": "1.2.x" 13 | } 14 | } -------------------------------------------------------------------------------- /chartroom/site/www/views/layouts/main.handlebars: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Meadowlark Travel - Micro Site 6 | 7 | 8 | 9 |
Micro Site
10 | {{{body}}} 11 | 12 | 13 | -------------------------------------------------------------------------------- /googleTranslate/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "谷歌翻译插件", 3 | "description": "右键谷歌翻译插件,Author:CharryWong", 4 | "manifest_version": 2, 5 | "version": "1.0", 6 | "browser_action": { 7 | "default_icon": "icons/icon48.png", 8 | "default_title":"谷歌翻译" 9 | }, 10 | "icons" : { 11 | "16" : "icons/icon16.png", 12 | "48" : "icons/icon48.png", 13 | "128" : "icons/icon128.png" 14 | }, 15 | "background": { 16 | "scripts": ["myscript.js"] 17 | }, 18 | "permissions": ["contextMenus", "tabs"] 19 | } -------------------------------------------------------------------------------- /devTool/ext/popup.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | { 4 | const backgroundPage = chrome.extension.getBackgroundPage(); 5 | var ext = Object.create(backgroundPage.ext); 6 | 7 | ext.closePopup = () => 8 | { 9 | window.close(); 10 | }; 11 | 12 | // We have to override ext.backgroundPage, because in order 13 | // to send messages the local "chrome" namespace must be used. 14 | ext.backgroundPage = { 15 | sendMessage: chrome.runtime.sendMessage, 16 | 17 | getWindow() 18 | { 19 | return backgroundPage; 20 | } 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /chartroom/site/public/styles/panel.css: -------------------------------------------------------------------------------- 1 | div { 2 | border: solid 0px #9bced2; 3 | } 4 | #panel { 5 | /*panel css*/ 6 | width: 600px; 7 | height: 600px; 8 | background: url(./images/panel.png) no-repeat 0px 0px; 9 | } 10 | .cell { 11 | /*cell css*/ 12 | width: 200px; 13 | height: 200px; 14 | float: left; 15 | cursor: pointer; 16 | } 17 | /*.cell:hover {*/ 18 | /*background: url(./images/location.png) no-repeat 75px 75px;*/ 19 | /*}*/ 20 | 21 | .black { 22 | background: url(./images/black.png) no-repeat 50px 50px; 23 | } 24 | 25 | .white { 26 | background: url(./images/white.png) no-repeat 50px 50px; 27 | } -------------------------------------------------------------------------------- /chartroom/site/www/styles/panel.css: -------------------------------------------------------------------------------- 1 | div { 2 | border: solid 0px #9bced2; 3 | } 4 | #panel { 5 | /*panel css*/ 6 | width: 600px; 7 | height: 600px; 8 | background: url(./images/panel.png) no-repeat 0px 0px; 9 | } 10 | .cell { 11 | /*cell css*/ 12 | width: 200px; 13 | height: 200px; 14 | float: left; 15 | cursor: pointer; 16 | } 17 | /*.cell:hover {*/ 18 | /*background: url(./images/location.png) no-repeat 75px 75px;*/ 19 | /*}*/ 20 | 21 | .black { 22 | background: url(./images/black.png) no-repeat 50px 50px; 23 | } 24 | 25 | .white { 26 | background: url(./images/white.png) no-repeat 50px 50px; 27 | } -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/panel.css: -------------------------------------------------------------------------------- 1 | div { 2 | border: solid 0px #9bced2; 3 | } 4 | #panel { 5 | /*panel css*/ 6 | width: 600px; 7 | height: 600px; 8 | background: url(./images/panel.png) no-repeat 0px 0px; 9 | } 10 | .cell { 11 | /*cell css*/ 12 | width: 200px; 13 | height: 200px; 14 | float: left; 15 | cursor: pointer; 16 | } 17 | /*.cell:hover {*/ 18 | /*background: url(./images/location.png) no-repeat 75px 75px;*/ 19 | /*}*/ 20 | 21 | .black { 22 | background: url(./images/black.png) no-repeat 50px 50px; 23 | } 24 | 25 | .white { 26 | background: url(./images/white.png) no-repeat 50px 50px; 27 | } -------------------------------------------------------------------------------- /devTool/utils.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const {require, Services} = ext.backgroundPage.getWindow(); 4 | 5 | const {Synchronizer} = require("synchronizer"); 6 | const {Utils} = require("utils"); 7 | const {Prefs} = require("prefs"); 8 | const {FilterStorage} = require("filterStorage"); 9 | const {FilterNotifier} = require("filterNotifier"); 10 | 11 | const {Subscription, DownloadableSubscription} = require("subscriptionClasses"); 12 | const {Filter, BlockingFilter} = require("filterClasses"); 13 | const {defaultMatcher} = require("matcher"); 14 | 15 | /** 16 | * Shortcut for document.getElementById(id) 17 | */ 18 | function E(id) 19 | { 20 | return document.getElementById(id); 21 | } 22 | -------------------------------------------------------------------------------- /googleTranslate/myscript.js: -------------------------------------------------------------------------------- 1 | function selectionOnClick(info, tab) { 2 | if(funcChina(info.selectionText)) 3 | { 4 | //不含有汉字 5 | window.open('http://translate.google.cn/#en/zh-CN/'+info.selectionText); 6 | } 7 | else 8 | { 9 | //含有汉字 10 | window.open('http://translate.google.cn/#zh-CN/en/'+info.selectionText); 11 | } 12 | } 13 | function funcChina(fanyistring){ 14 | var obj = fanyistring; 15 | if(/.*[\u4e00-\u9fa5]+.*$/.test(obj)) { 16 | //alert("不能含有汉字!"); 17 | return false; 18 | } 19 | return true; 20 | } 21 | var selection = chrome.contextMenus.create({"title": "谷歌翻译","contexts":["selection"],"onclick":selectionOnClick}); -------------------------------------------------------------------------------- /chartroom/site/www/styles/test.less: -------------------------------------------------------------------------------- 1 | @R1:1rem; 2 | div { 3 | border: solid 0px #9bced2; 4 | } 5 | .act1{ 6 | width: 1/2*@R1; 7 | height: 1/2*@R1; 8 | border: solid 1px #000000; 9 | } 10 | #panel { 11 | /*panel css*/ 12 | width: 9/10*@R1; 13 | height: 9/10*@R1; 14 | margin: auto; 15 | background: url(./images/panel.png) no-repeat 0px 0px; 16 | background-size: 9/10*@R1 9/10*@R1; 17 | } 18 | .cell { 19 | /*cell css*/ 20 | width: 3/10*@R1; 21 | height: 3/10*@R1; 22 | float: left; 23 | } 24 | 25 | .black { 26 | background: url(./images/black.png) no-repeat 45/600*@R1 45/600*@R1; 27 | background-size: 9/60*@R1 9/60*@R1; 28 | } 29 | 30 | .white { 31 | background: url(./images/white.png) no-repeat 45/600*@R1 45/600*@R1; 32 | background-size: 9/60*@R1 9/60*@R1; 33 | } -------------------------------------------------------------------------------- /chartroom/site/public/styles/test.less: -------------------------------------------------------------------------------- 1 | @R1:1rem; 2 | div { 3 | border: solid 0px #9bced2; 4 | } 5 | .act1{ 6 | width: 1/2*@R1; 7 | height: 1/2*@R1; 8 | border: solid 1px #000000; 9 | } 10 | #panel { 11 | /*panel css*/ 12 | width: 9/10*@R1; 13 | height: 9/10*@R1; 14 | margin: auto; 15 | background: url(./images/panel.png) no-repeat 0px 0px; 16 | background-size: 9/10*@R1 9/10*@R1; 17 | } 18 | .cell { 19 | /*cell css*/ 20 | width: 3/10*@R1; 21 | height: 3/10*@R1; 22 | float: left; 23 | } 24 | 25 | .black { 26 | background: url(./images/black.png) no-repeat 45/600*@R1 45/600*@R1; 27 | background-size: 9/60*@R1 9/60*@R1; 28 | } 29 | 30 | .white { 31 | background: url(./images/white.png) no-repeat 45/600*@R1 45/600*@R1; 32 | background-size: 9/60*@R1 9/60*@R1; 33 | } -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/test.less: -------------------------------------------------------------------------------- 1 | @R1:1rem; 2 | div { 3 | border: solid 0px #9bced2; 4 | } 5 | .act1{ 6 | width: 1/2*@R1; 7 | height: 1/2*@R1; 8 | border: solid 1px #000000; 9 | } 10 | #panel { 11 | /*panel css*/ 12 | width: 9/10*@R1; 13 | height: 9/10*@R1; 14 | margin: auto; 15 | background: url(./images/panel.png) no-repeat 0px 0px; 16 | background-size: 9/10*@R1 9/10*@R1; 17 | } 18 | .cell { 19 | /*cell css*/ 20 | width: 3/10*@R1; 21 | height: 3/10*@R1; 22 | float: left; 23 | } 24 | 25 | .black { 26 | background: url(./images/black.png) no-repeat 45/600*@R1 45/600*@R1; 27 | background-size: 9/60*@R1 9/60*@R1; 28 | } 29 | 30 | .white { 31 | background: url(./images/white.png) no-repeat 45/600*@R1 45/600*@R1; 32 | background-size: 9/60*@R1 9/60*@R1; 33 | } -------------------------------------------------------------------------------- /devTool/devtools.html: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /ElementBlurTool/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "网页元素模糊插件", 3 | "description" : "为网页元素添加滤镜效果,Author:CharyWong", 4 | "manifest_version" : 2, 5 | "version" : "1.0", 6 | "browser_action" : { 7 | "default_icon" : "icons/icon48.png", 8 | "default_popup" : "popup/options.html", 9 | "default_title" : "网页元素模糊插件" 10 | }, 11 | "icons" : { 12 | "16" : "icons/icon16.png", 13 | "48" : "icons/icon48.png", 14 | "128" : "icons/icon128.png" 15 | }, 16 | "content_scripts" : [{ 17 | "matches" : ["http://*/*","https://*/*","file:///*/*"], 18 | "js" : ["jquery/jquery-1.7.1.js", "content_scripts/cscript.js"] 19 | } 20 | ], 21 | /**extension options page*/ 22 | "options_page" : "popup/options.html", 23 | 24 | /**background scripts run in extensions*/ 25 | "background" : { 26 | "scripts" : ["background/myscript.js"] 27 | }, 28 | 29 | /*允许右键菜单*/ 30 | "permissions" : ["contextMenus", "tabs"] 31 | } -------------------------------------------------------------------------------- /devTool/ext/content.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | chrome.runtime.onMessage.addListener((message, sender, sendResponse) => 4 | { 5 | return ext.onMessage._dispatch(message, {}, sendResponse).indexOf(true) != -1; 6 | }); 7 | 8 | { 9 | let port = null; 10 | 11 | ext.onExtensionUnloaded = { 12 | addListener(listener) 13 | { 14 | if (!port) 15 | port = chrome.runtime.connect(); 16 | 17 | // When the extension is reloaded, disabled or uninstalled the 18 | // background page dies and automatically disconnects all ports 19 | port.onDisconnect.addListener(listener); 20 | }, 21 | removeListener(listener) 22 | { 23 | if (port) 24 | { 25 | port.onDisconnect.removeListener(listener); 26 | 27 | if (!port.onDisconnect.hasListeners()) 28 | { 29 | port.disconnect(); 30 | port = null; 31 | } 32 | } 33 | } 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /googleTranslateUpper/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "谷歌翻译插件", 3 | "description": "在线划词翻译插件,Author:CharryWong", 4 | "manifest_version": 2, 5 | "version": "2.0", 6 | "browser_action": { 7 | "default_icon": "icons/icon48.png", 8 | "default_popup" : "popup/options.html", 9 | "default_title":"谷歌翻译" 10 | }, 11 | "icons" : { 12 | "16" : "icons/icon16.png", 13 | "48" : "icons/icon48.png", 14 | "128" : "icons/icon128.png" 15 | }, 16 | /**extension options page*/ 17 | "options_page" : "popup/options.html", 18 | "content_scripts": 19 | [ 20 | { 21 | "js": ["jquery/jquery-1.7.1.js","contentscript/my.js"], 22 | "css": ["contentscript/googlefanyitip.css"], 23 | "matches": [ "http://*/*", "https://*/*" ] 24 | } 25 | ], 26 | /**background scripts run in extensions*/ 27 | "background" : { 28 | "scripts" : ["background/background.js"] 29 | }, 30 | "permissions": ["storage"] 31 | } -------------------------------------------------------------------------------- /URLMaster/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "URLMaster", 3 | "description": "右键解析连接码,并转跳到URL,Author:CharryWong", 4 | "manifest_version": 2, 5 | "version": "1.0", 6 | "browser_action": { 7 | "default_icon": "icons/icon16.png", 8 | "default_popup" : "popup/options.html", 9 | "default_title":"URLMaster" 10 | }, 11 | "icons" : { 12 | "16" : "icons/icon16.png", 13 | "48" : "icons/icon48.png", 14 | "128" : "icons/icon128.png" 15 | }, 16 | "content_scripts" : [{ 17 | "matches" : ["http://*/*","https://*/*","file:///*/*"], 18 | "js" : ["jquery/jquery-1.7.1.js", "content_scripts/cscript.js"] 19 | } 20 | ], 21 | "background": { 22 | "page":"background/background.html" 23 | }, 24 | /**extension options page*/ 25 | "options_page" : "popup/options.html", 26 | "permissions": [ 27 | "storage", 28 | "contextMenus", 29 | "tabs", 30 | "http://www.blogso.cn/", 31 | "http://localhost:8080/" 32 | ] 33 | } -------------------------------------------------------------------------------- /chartroom/site/views/layouts/main.handlebars: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 米字棋-在线小游戏 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | {{{body}}} 20 | 21 | -------------------------------------------------------------------------------- /URLMaster/background/bg.js: -------------------------------------------------------------------------------- 1 | function selectionOnClick(info, tab) { 2 | var method = { 3 | keyword : info.selectionText, 4 | dataType : "json" 5 | }; 6 | var rawurl = ""; 7 | $.get('http://www.blogso.cn/urlmaster/index.php/Index/decodeURL/index.html', method, function (response) { 8 | rawurl = response.rawurl; 9 | 10 | window.open(rawurl); 11 | }); 12 | 13 | //console.log(rawurl); 14 | 15 | } 16 | function funcChina(fanyistring) { 17 | var obj = fanyistring; 18 | if (/.*[\u4e00-\u9fa5]+.*$/.test(obj)) { 19 | //alert("不能含有汉字!"); 20 | return false; 21 | } 22 | return true; 23 | } 24 | var selection = chrome.contextMenus.create({ 25 | "title" : "转跳到网页", 26 | "contexts" : ["selection"], 27 | "onclick" : selectionOnClick 28 | }); 29 | 30 | //接收来自插件的消息 31 | chrome.runtime.onMessage.addListener( 32 | function (request, sender, sendResponse) { 33 | if (request.url != undefined) { 34 | localStorage["currenturl"] = request.url; 35 | } 36 | }); 37 | -------------------------------------------------------------------------------- /devTool/ext/devtools.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | { 21 | let inspectedTabId = chrome.devtools.inspectedWindow.tabId; 22 | let port = chrome.runtime.connect({name: "devtools-" + inspectedTabId}); 23 | 24 | ext.onMessage = port.onMessage; 25 | ext.devtools = chrome.devtools; 26 | } 27 | -------------------------------------------------------------------------------- /googleTranslateUpper/popup/options.js: -------------------------------------------------------------------------------- 1 | //这是选项页面的js 2 | $(function () { 3 | enableExtension = Number(localStorage["fanyienabled"]||1)||0; 4 | 5 | //根据插件可用参数,来设置单选框的值 6 | if(enableExtension===1){ 7 | $('[name="switchbtn"]').val(['1']); 8 | } 9 | else 10 | { 11 | $('[name="switchbtn"]').val(['0']); 12 | } 13 | 14 | //处理单选按钮的点击事件 15 | $('[name="switchbtn"]').click(function(){ 16 | enableExtension = $(this).val(); 17 | localStorage["fanyienabled"] = enableExtension; 18 | sendCmd(enableExtension); 19 | chrome.extension.getBackgroundPage().updateQTExtension(); 20 | }); 21 | 22 | //发送消息的方法 23 | function sendCmd(str){ 24 | var optionmsg = str; 25 | // Send a message to the active tab 26 | chrome.tabs.query({ 27 | active : true, 28 | currentWindow : true 29 | }, function (tabs) { 30 | var activeTab = tabs[0]; 31 | //chrome.tabs.sendMessage(activeTab.id, {"message": transstorage}); 32 | for (var i = 0; i < 1; i++) { 33 | chrome.tabs.sendMessage(activeTab.id, { 34 | "enablevalue" : optionmsg, 35 | "tag":"optionpage" 36 | }); 37 | } 38 | }); 39 | } 40 | }); -------------------------------------------------------------------------------- /chartroom/site/www/styles/main.copy.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | background-color: #efefef; 4 | font-family: sans-serif; 5 | } 6 | .wrapper { 7 | font-size: 14px; 8 | width: 0.7rem; 9 | height: 0.57rem; 10 | padding: 0.01rem; 11 | margin: 0 auto; 12 | background-color: #ddd; 13 | } 14 | #nickWrapper { 15 | display: none; 16 | } 17 | .banner { 18 | height: 0.02rem; 19 | width: 100%; 20 | } 21 | .banner p { 22 | float: left; 23 | display: inline-block; 24 | } 25 | .controls { 26 | height: 0.19rem; 27 | margin: 0.02rem 0rem; 28 | position: relative; 29 | } 30 | #historyMsg { 31 | height: 0.32rem; 32 | background-color: #fff; 33 | overflow: auto; 34 | padding: 2px; 35 | font-size: 14px; 36 | } 37 | #historyMsg img { 38 | max-width: 99%; 39 | } 40 | .timespan { 41 | color: #ddd; 42 | } 43 | .items { 44 | height: 0.02rem; 45 | } 46 | 47 | #messageInput { 48 | width: 0.6rem; 49 | max-width: 0.6rem; 50 | height: 0.17rem; 51 | max-height: 0.17rem; 52 | float:left; 53 | } 54 | #sendBtn { 55 | width: 0.07rem; 56 | height: 0.18rem; 57 | float: right; 58 | font-size: 0.04rem; 59 | padding: 0.01rem; 60 | } 61 | 62 | -------------------------------------------------------------------------------- /chartroom/site/public/styles/main.copy.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | background-color: #efefef; 4 | font-family: sans-serif; 5 | } 6 | .wrapper { 7 | font-size: 14px; 8 | width: 0.7rem; 9 | height: 0.57rem; 10 | padding: 0.01rem; 11 | margin: 0 auto; 12 | background-color: #ddd; 13 | } 14 | #nickWrapper { 15 | display: none; 16 | } 17 | .banner { 18 | height: 0.02rem; 19 | width: 100%; 20 | } 21 | .banner p { 22 | float: left; 23 | display: inline-block; 24 | } 25 | .controls { 26 | height: 0.19rem; 27 | margin: 0.02rem 0rem; 28 | position: relative; 29 | } 30 | #historyMsg { 31 | height: 0.32rem; 32 | background-color: #fff; 33 | overflow: auto; 34 | padding: 2px; 35 | font-size: 14px; 36 | } 37 | #historyMsg img { 38 | max-width: 99%; 39 | } 40 | .timespan { 41 | color: #ddd; 42 | } 43 | .items { 44 | height: 0.02rem; 45 | } 46 | 47 | #messageInput { 48 | width: 0.6rem; 49 | max-width: 0.6rem; 50 | height: 0.17rem; 51 | max-height: 0.17rem; 52 | float:left; 53 | } 54 | #sendBtn { 55 | width: 0.07rem; 56 | height: 0.18rem; 57 | float: right; 58 | font-size: 0.04rem; 59 | padding: 0.01rem; 60 | } 61 | 62 | -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/main.copy.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | background-color: #efefef; 4 | font-family: sans-serif; 5 | } 6 | .wrapper { 7 | font-size: 14px; 8 | width: 0.7rem; 9 | height: 0.57rem; 10 | padding: 0.01rem; 11 | margin: 0 auto; 12 | background-color: #ddd; 13 | } 14 | #nickWrapper { 15 | display: none; 16 | } 17 | .banner { 18 | height: 0.02rem; 19 | width: 100%; 20 | } 21 | .banner p { 22 | float: left; 23 | display: inline-block; 24 | } 25 | .controls { 26 | height: 0.19rem; 27 | margin: 0.02rem 0rem; 28 | position: relative; 29 | } 30 | #historyMsg { 31 | height: 0.32rem; 32 | background-color: #fff; 33 | overflow: auto; 34 | padding: 2px; 35 | font-size: 14px; 36 | } 37 | #historyMsg img { 38 | max-width: 99%; 39 | } 40 | .timespan { 41 | color: #ddd; 42 | } 43 | .items { 44 | height: 0.02rem; 45 | } 46 | 47 | #messageInput { 48 | width: 0.6rem; 49 | max-width: 0.6rem; 50 | height: 0.17rem; 51 | max-height: 0.17rem; 52 | float:left; 53 | } 54 | #sendBtn { 55 | width: 0.07rem; 56 | height: 0.18rem; 57 | float: right; 58 | font-size: 0.04rem; 59 | padding: 0.01rem; 60 | } 61 | 62 | -------------------------------------------------------------------------------- /devTool/qunit/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |

adblockpluschrome unit tests

28 |

29 |
30 |

31 |
    32 | 33 | -------------------------------------------------------------------------------- /googleTranslateUpper/contentscript/googlefanyitip.css: -------------------------------------------------------------------------------- 1 | #googlefanyitip p{ 2 | text-align:left; 3 | font-family:arial,sans-serif; 4 | text-indent: 0em; 5 | /* color:#000; */ 6 | } 7 | .googlefanyitipcon { 8 | position: absolute; 9 | z-index: 1; 10 | top: 22px; 11 | left: -35px; 12 | background: #fff; 13 | border: 1px solid #dcdcdc; 14 | border: 1px solid rgba(0,0,0,0.2); 15 | -webkit-transition: opacity .218s; 16 | transition: opacity .218s; 17 | -webkit-box-shadow: 0 2px 4px rgba(0,0,0,0.2); 18 | /* box-shadow: 0 2px 4px rgba(0,0,0,0.2); */ 19 | padding: 5px 0 5px 0; 20 | display: none; 21 | font-size: 13px; 22 | line-height: 20px; 23 | font-family: arial; 24 | } 25 | .translateContent { 26 | max-width: 350px; 27 | } 28 | .googlefanyisound{ 29 | margin-left: .2em; 30 | font-size: 12px; 31 | font-family: "lucida sans unicode",arial,sans-serif; 32 | color: #a0a0a0; 33 | font-weight: normal; 34 | margin: 0 .3em; 35 | line-height: 26px; 36 | } 37 | .googlefanyicixing{ 38 | color: #000; 39 | font-family:"microsoft yahei","宋体",arial,sans-serif; 40 | font-style: italic; 41 | font-size: 12px; 42 | font-weight: 400; 43 | } 44 | .googlefanyimeaning{ 45 | /* letter-spacing: 0.1em; */ 46 | } -------------------------------------------------------------------------------- /chartroom/site/public/scripts/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Touch Punch 0.2.3 3 | * 4 | * Copyright 2011–2014, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | !function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); -------------------------------------------------------------------------------- /chartroom/site/www/scripts/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Touch Punch 0.2.3 3 | * 4 | * Copyright 2011–2014, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | !function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); -------------------------------------------------------------------------------- /chartroom/site/www/public/scripts/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Touch Punch 0.2.3 3 | * 4 | * Copyright 2011–2014, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | !function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); -------------------------------------------------------------------------------- /googleTranslateUpper/popup/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 谷歌翻译插件 10 | 11 | 12 |
    谷歌翻译插件
    13 |
    14 |
    15 |
    16 |
      17 |
    • 18 | 22 |
    • 23 |
    • 24 | 28 |
    • 29 |
    30 |
    31 |
    32 |
    33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /chartroom/site/views/index.handlebars: -------------------------------------------------------------------------------- 1 | 12 | 13 |
    14 | 15 |
    16 |
    17 |
    18 | 19 |
    20 |
    21 |
    22 | 23 |
    24 |
    25 |
    26 |
    27 |
    28 | 31 |
    32 |
    33 |
    34 | 35 | 36 |
    37 |
    38 |
    39 | 40 | -------------------------------------------------------------------------------- /googleTranslateUpper/background/background.js: -------------------------------------------------------------------------------- 1 | //这是背景页的代码 2 | 3 | (function (global) { 4 | 5 | /**localStorage value type is always string, we should convert it into number when need*/ 6 | var enableExtension = Number(localStorage["fanyienabled"]||1) || 0; 7 | //更新图标 8 | function updateExtensionStatus() { 9 | enableExtension = Number(localStorage["fanyienabled"]||1) || 0; 10 | chrome.browserAction.setIcon({ 11 | path : "icons/icon48" + (enableExtension ?"":"_disabled") + ".png" 12 | }); 13 | } 14 | 15 | //发送消息的方法 16 | function sendCmd(str){ 17 | var optionmsg = str; 18 | // Send a message to the active tab 19 | chrome.tabs.query({ 20 | active : true, 21 | currentWindow : true 22 | }, function (tabs) { 23 | var activeTab = tabs[0]; 24 | //chrome.tabs.sendMessage(activeTab.id, {"message": transstorage}); 25 | for (var i = 0; i < 1; i++) { 26 | chrome.tabs.sendMessage(activeTab.id, { 27 | "enablevalue" : optionmsg, 28 | "tag":"optionpage" 29 | }); 30 | } 31 | }); 32 | } 33 | 34 | //该方法会在设置值发生改变的时候进行调用 35 | global.updateQTExtension = function () { 36 | updateExtensionStatus(); 37 | }; 38 | 39 | //打开页面时要执行一次 40 | updateExtensionStatus(); 41 | 42 | //当内容脚本发送请求时,给出答复 43 | chrome.runtime.onMessage.addListener( 44 | function (request, sender, sendResponse) { 45 | //listenertime++; 46 | //单击用户更改插件可用状态会触发该事件 47 | if (request.msg == "getLocalStorage") { 48 | sendCmd(enableExtension); 49 | } 50 | }); 51 | })(window); -------------------------------------------------------------------------------- /devTool/_locales/am/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "message": "ጨምር" 4 | }, 5 | "add_domain_button": { 6 | "message": "አድራሻ ጨምር" 7 | }, 8 | "add_filter_button": { 9 | "message": "ማጣሪያ ጨምር" 10 | }, 11 | "add_filters_msg": { 12 | "message": "ማጣሪያ(ዎች) ጨምር?" 13 | }, 14 | "add_your_own_filters": { 15 | "message": "የራስዎትን ማጣሪያ ይጨምሩ" 16 | }, 17 | "apply_changes": { 18 | "message": "ለውጡን ተቀበል" 19 | }, 20 | "block_element": { 21 | "message": "ይሄንን ከልክል" 22 | }, 23 | "cancel": { 24 | "message": "ይቅር" 25 | }, 26 | "description": { 27 | "description": "Note: this cannot be longer than 132 characters", 28 | "message": "Used on over 100 million devices, Adblock Plus is the world's most popular ad blocker." 29 | }, 30 | "filter_lists": { 31 | "message": "የማጣሪያ ዝርዝር" 32 | }, 33 | "general": { 34 | "message": "አጠቃላይ" 35 | }, 36 | "line": { 37 | "message": "መስመር $number$", 38 | "placeholders": { 39 | "number": { 40 | "content": "$1" 41 | } 42 | } 43 | }, 44 | "name": { 45 | "message": "Adblock Plus" 46 | }, 47 | "options": { 48 | "message": "የአድብሎክ ፕላስ ምርጫዎች" 49 | }, 50 | "options_short": { 51 | "message": "ምርጫዎች" 52 | }, 53 | "remove_button": { 54 | "message": "የተመረጠውን አጥፋ" 55 | }, 56 | "stats_show_iconnumber": { 57 | "message": "ቁጥር ምልክት ላይ አሳይ" 58 | }, 59 | "stats_title": { 60 | "message": "የተከለከሉ ማስታወቂያዎች" 61 | }, 62 | "update_now": { 63 | "message": "ማሻሻያ አሁን አርግ" 64 | }, 65 | "whitelisted_domains": { 66 | "message": "የተፈቀዱ አድራሻዎች" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /URLMaster/popup/options.js: -------------------------------------------------------------------------------- 1 | //这是选项页面的js 2 | $(function () { 3 | $fillurl = localStorage["currenturl"] || ""; 4 | $("#url").val($fillurl); 5 | //把链接转换成字符串 6 | $("#encode").click(function () { 7 | if(isURL($("#url").val())==false) 8 | { 9 | $("#keyword").val("请检查URL格式"); 10 | return; 11 | } 12 | var method = { 13 | rawurl : $("#url").val(), 14 | dataType : "json" 15 | }; 16 | $.get('http://www.blogso.cn/urlmaster/index.php/Index/encodeURL/index.html', method, function (response) { 17 | $("#keyword").val(response.keyword); 18 | }); 19 | }); 20 | 21 | //把字符串转换成连接 22 | $("#decode").click(function () { 23 | var method = { 24 | keyword : $("#keyword").val(), 25 | dataType : "json" 26 | }; 27 | $.get('http://www.blogso.cn/urlmaster/index.php/Index/decodeURL/index.html', method, function (response) { 28 | $("#url").val(response.rawurl); 29 | }); 30 | }); 31 | 32 | //查看使用说明 33 | $("#instruction").click(function(){ 34 | $("#instructfield").toggleClass('instructhide'); 35 | }); 36 | 37 | //检测URL的合法性 38 | function isURL(str) {// 验证url 39 | var RegUrl = new RegExp(); 40 | RegUrl.compile("^((https|http|ftp|rtsp|mms)?://)[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$"); 41 | if (!RegUrl.test(str)) { 42 | return false; 43 | } 44 | return true; 45 | } 46 | 47 | //接收来自插件的消息 48 | chrome.runtime.onMessage.addListener( 49 | function (request, sender, sendResponse) { 50 | if (request.url != undefined) { 51 | localStorage["currenturl"] = request.url; 52 | } 53 | }); 54 | 55 | }); -------------------------------------------------------------------------------- /devTool/skin/common.css: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | #glass-pane, #share-popup 19 | { 20 | visibility: hidden; 21 | opacity: 0; 22 | -webkit-transition-property: opacity; 23 | transition-property: opacity; 24 | } 25 | 26 | #glass-pane 27 | { 28 | position: fixed; 29 | top: 0; 30 | right: 0; 31 | bottom: 0; 32 | left: 0; 33 | background: rgba(0, 0, 0, 0.5) url(ajax-loader.gif) no-repeat 50% 50%; 34 | z-index: 101; 35 | -webkit-transition-duration: 0.2s; 36 | transition-duration: 0.2s; 37 | } 38 | 39 | #share-popup 40 | { 41 | position: absolute; 42 | top: 50%; 43 | left: 50%; 44 | border: none; 45 | -webkit-transition-delay: 0.1s; 46 | transition-delay: 0.1s; 47 | } 48 | 49 | #glass-pane.visible, #share-popup.visible 50 | { 51 | visibility: visible; 52 | opacity: 1; 53 | } 54 | 55 | #share-popup.visible 56 | { 57 | -webkit-transition-duration: 0.15s; 58 | transition-duration: 0.15s; 59 | } 60 | -------------------------------------------------------------------------------- /URLMaster/popup/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | URLMaster 10 | 11 | 12 |
    URLMaster
    13 |
    14 |
    15 |
    16 |
      17 |
    • 18 | 21 |
    • 22 |
    • 23 | 26 |
    • 27 |
    28 |
    29 | 30 | 31 | 32 |
    33 |
    34 |
    35 | 42 |
    43 |
    44 |
    45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /chartroom/site/server.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | app = express(), 3 | server = require('http').createServer(app), 4 | io = require('socket.io').listen(server), 5 | users = []; 6 | //specify the html we will use 7 | app.use('/', express.static(__dirname + '/www')); 8 | //bind the server to the 80 port 9 | //server.listen(3000);//for local test 10 | server.listen(process.env.PORT || 3000);//publish to heroku 11 | //server.listen(process.env.OPENSHIFT_NODEJS_PORT || 3000);//publish to openshift 12 | //console.log('server started on port'+process.env.PORT || 3000); 13 | //handle the socket 14 | io.sockets.on('connection', function(socket) { 15 | //new user login 16 | socket.on('login', function(nickname) { 17 | if (users.indexOf(nickname) > -1) { 18 | socket.emit('nickExisted'); 19 | } else { 20 | //socket.userIndex = users.length; 21 | socket.nickname = nickname; 22 | users.push(nickname); 23 | socket.emit('loginSuccess'); 24 | io.sockets.emit('system', nickname, users.length, 'login'); 25 | }; 26 | }); 27 | //user leaves 28 | socket.on('disconnect', function() { 29 | if (socket.nickname != null) { 30 | //users.splice(socket.userIndex, 1); 31 | users.splice(users.indexOf(socket.nickname), 1); 32 | socket.broadcast.emit('system', socket.nickname, users.length, 'logout'); 33 | } 34 | }); 35 | //new message get 36 | socket.on('postMsg', function(msg) { 37 | socket.broadcast.emit('newMsg', msg); 38 | }); 39 | //chess move 40 | socket.on('postMove', function(msg, color) { 41 | socket.broadcast.emit('newMove', socket.nickname, msg, color); 42 | }); 43 | //new image get 44 | socket.on('img', function(imgData, color) { 45 | socket.broadcast.emit('newImg', socket.nickname, imgData, color); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /devTool/lib/info.js: -------------------------------------------------------------------------------- 1 | /* This Source Code Form is subject to the terms of the Mozilla Public 2 | * License, v. 2.0. If a copy of the MPL was not distributed with this 3 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 | 5 | "use strict"; 6 | 7 | (function() { 8 | var platform = "chromium"; 9 | var platformVersion = null; 10 | var application = null; 11 | var applicationVersion; 12 | 13 | var regexp = /(\S+)\/(\S+)(?:\s*\(.*?\))?/g; 14 | var match; 15 | 16 | while (match = regexp.exec(navigator.userAgent)) 17 | { 18 | var app = match[1]; 19 | var ver = match[2]; 20 | 21 | if (app == "Chrome") 22 | { 23 | platformVersion = ver; 24 | } 25 | else if (app == "Edge") 26 | { 27 | platform = "edgehtml"; 28 | platformVersion = ver; 29 | application = "edge"; 30 | applicationVersion = "0"; 31 | } 32 | else if (app != "Mozilla" && app != "AppleWebKit" && app != "Safari") 33 | { 34 | // For compatibility with legacy websites, Chrome's UA 35 | // also includes a Mozilla, AppleWebKit and Safari token. 36 | // Any further name/version pair indicates a fork. 37 | application = app == "OPR" ? "opera" : app.toLowerCase(); 38 | applicationVersion = ver; 39 | } 40 | } 41 | 42 | // not a Chromium-based UA, probably modifed by the user 43 | if (!platformVersion) 44 | { 45 | application = "unknown"; 46 | applicationVersion = platformVersion = "0"; 47 | } 48 | 49 | // no additional name/version, so this is upstream Chrome 50 | if (!application) 51 | { 52 | application = "chrome"; 53 | applicationVersion = platformVersion; 54 | } 55 | 56 | require.scopes.info = { 57 | addonName: "adblockpluschrome", 58 | addonVersion: "1.13.2", 59 | 60 | application: application, 61 | applicationVersion: applicationVersion, 62 | 63 | platform: platform, 64 | platformVersion: platformVersion 65 | }; 66 | })(); -------------------------------------------------------------------------------- /devTool/devtools.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | let panelWindow = null; 21 | 22 | chrome.runtime.sendMessage( 23 | { 24 | type: "prefs.get", 25 | key: "show_devtools_panel" 26 | }, 27 | enabled => 28 | { 29 | if (enabled) 30 | { 31 | chrome.devtools.panels.create( 32 | "Adblock Plus", 33 | "icons/detailed/abp-48.png", 34 | "devtools-panel.html", 35 | panel => 36 | { 37 | panel.onShown.addListener(window => 38 | { 39 | panelWindow = window; 40 | }); 41 | 42 | panel.onHidden.addListener(window => 43 | { 44 | panelWindow = null; 45 | }); 46 | 47 | panel.onSearch.addListener((eventName, queryString) => 48 | { 49 | if (panelWindow) 50 | { 51 | panelWindow.postMessage({ 52 | type: eventName, 53 | queryString: queryString 54 | }, "*"); 55 | } 56 | }); 57 | } 58 | ); 59 | chrome.devtools.network.onRequestFinished.addListener( 60 | function(request) { 61 | console.log("111"); 62 | chrome.devtools.inspectedWindow.eval( 63 | 'console.log(JSON.parse(unescape("' + 64 | escape(JSON.stringify(request)) + '")))'); 65 | }); 66 | } 67 | } 68 | ); 69 | -------------------------------------------------------------------------------- /ElementBlurTool/content_scripts/cscript.js: -------------------------------------------------------------------------------- 1 | //这是content_scripts 2 | /** 3 | 如果元素被打码了,则拥有nowblur类, 4 | 如果元素打码后又被取消了,先拥有nowclear类, 5 | 然后失去nowblur和nowclear类 6 | */ 7 | //BEGIN 8 | $(function () { 9 | $(document).mousedown(function (e) { // 在页面任意位置点击而触发此事件 10 | if (3 == e.which) { 11 | if ($(e.target).hasClass("nowblur")) { 12 | $(".willclear").removeClass("willclear"); //元素已被加滤镜,准备去滤镜 13 | $(e.target).addClass("willclear"); 14 | } else { 15 | $(".willblur").removeClass("willblur"); //元素尚未加滤镜,准备加滤镜 16 | $(e.target).addClass("willblur"); 17 | } 18 | } 19 | 20 | }) 21 | 22 | //消息传递,监听接收次数 23 | var listenertime = 0; 24 | 25 | //接收来自插件的消息 26 | chrome.runtime.onMessage.addListener( 27 | function (request, sender, sendResponse) { 28 | listenertime++; 29 | //单击模糊按钮会触发该事件 30 | if (request.channelmsg != undefined) { 31 | blurvalue = Number(request.channelmsg); 32 | //对将要加滤镜的元素做滤镜处理 33 | $(".willblur").addClass("nowblur"); 34 | $(".nowblur").css({ 35 | "-webkit-filter" : "blur("+blurvalue+"px)" 36 | }); 37 | $(".nowblur").removeClass("willblur"); 38 | 39 | //对将要去滤镜的元素取消滤镜 40 | $(".willclear").addClass("nowclear"); 41 | $(".nowclear").css({ 42 | "-webkit-filter" : "none" 43 | }); 44 | $(".nowclear").removeClass("willclear"); 45 | 46 | //如果元素加了滤镜,又去了滤镜则把元素还原为初始状态 47 | $(".nowblur.nowclear").removeClass("nowblur").removeClass("nowclear"); 48 | 49 | console.log("第"+listenertime+"次" + "\n" + request.channelmsg); 50 | } 51 | //单击取消模糊按钮会触发该事件 52 | if(request.cmd != undefined && request.cmd == "cancel"){ 53 | console.log("cmd: cancel"); 54 | $(".nowblur").css({ 55 | "-webkit-filter" : "none" 56 | }).removeClass("nowblur").removeClass("nowclear").removeClass("willblur").removeClass("willclear"); 57 | } 58 | 59 | //更改模糊值会触发该事件 60 | if(request.cmd != undefined && request.channelmsg != undefined){ 61 | blurvalue = request.channelmsg; 62 | console.log(request.cmd+" "+blurvalue); 63 | $(".nowblur").css({ 64 | "-webkit-filter" : "blur("+blurvalue+"px)" 65 | }); 66 | } 67 | 68 | }); 69 | }); -------------------------------------------------------------------------------- /chartroom/site/public/styles/main.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | background-color: #efefef; 4 | font-family: sans-serif; 5 | } 6 | .wrapper { 7 | width: 500px; 8 | height: 640px; 9 | padding: 5px; 10 | margin: 0 auto; 11 | background-color: #ddd; 12 | } 13 | #loginWrapper { 14 | position: fixed; 15 | top: 0; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | background-color: rgba(5, 5, 5, .6); 20 | text-align: center; 21 | color: #fff; 22 | display: block; 23 | padding-top: 200px; 24 | } 25 | #nickWrapper { 26 | display: none; 27 | } 28 | .banner { 29 | height: 80px; 30 | width: 100%; 31 | } 32 | .banner p { 33 | float: left; 34 | display: inline-block; 35 | } 36 | .controls { 37 | height: 100px; 38 | margin: 5px 0px; 39 | position: relative; 40 | } 41 | #historyMsg { 42 | height: 400px; 43 | background-color: #fff; 44 | overflow: auto; 45 | padding: 2px; 46 | } 47 | #historyMsg img { 48 | max-width: 99%; 49 | } 50 | .timespan { 51 | color: #ddd; 52 | } 53 | .items { 54 | height: 30px; 55 | } 56 | #colorStyle { 57 | width: 50px; 58 | border: none; 59 | padding: 0; 60 | } 61 | /*custom the file input*/ 62 | 63 | .imageLable { 64 | position: relative; 65 | } 66 | #sendImage { 67 | position: absolute; 68 | width: 52px; 69 | left: 0; 70 | opacity: 0; 71 | overflow: hidden; 72 | } 73 | /*end custom file input*/ 74 | 75 | #messageInput { 76 | width: 440px; 77 | max-width: 440px; 78 | height: 90px; 79 | max-height: 90px; 80 | float:left; 81 | } 82 | #sendBtn { 83 | width: 50px; 84 | height: 96px; 85 | float: right; 86 | } 87 | #emojiWrapper { 88 | display: none; 89 | width: 500px; 90 | bottom: 105px; 91 | position: absolute; 92 | background-color: #aaa; 93 | box-shadow: 0 0 10px #555; 94 | } 95 | #emojiWrapper img { 96 | margin: 2px; 97 | padding: 2px; 98 | width: 25px; 99 | height: 25px; 100 | } 101 | #emojiWrapper img:hover { 102 | background-color: blue; 103 | } 104 | .emoji{ 105 | display: inline; 106 | } 107 | footer { 108 | text-align: center; 109 | } 110 | -------------------------------------------------------------------------------- /chartroom/site/www/styles/main.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | background-color: #efefef; 4 | font-family: sans-serif; 5 | } 6 | .wrapper { 7 | width: 500px; 8 | height: 640px; 9 | padding: 5px; 10 | margin: 0 auto; 11 | background-color: #ddd; 12 | } 13 | #loginWrapper { 14 | position: fixed; 15 | top: 0; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | background-color: rgba(5, 5, 5, .6); 20 | text-align: center; 21 | color: #fff; 22 | display: block; 23 | padding-top: 200px; 24 | } 25 | #nickWrapper { 26 | display: none; 27 | } 28 | .banner { 29 | height: 80px; 30 | width: 100%; 31 | } 32 | .banner p { 33 | float: left; 34 | display: inline-block; 35 | } 36 | .controls { 37 | height: 100px; 38 | margin: 5px 0px; 39 | position: relative; 40 | } 41 | #historyMsg { 42 | height: 400px; 43 | background-color: #fff; 44 | overflow: auto; 45 | padding: 2px; 46 | } 47 | #historyMsg img { 48 | max-width: 99%; 49 | } 50 | .timespan { 51 | color: #ddd; 52 | } 53 | .items { 54 | height: 30px; 55 | } 56 | #colorStyle { 57 | width: 50px; 58 | border: none; 59 | padding: 0; 60 | } 61 | /*custom the file input*/ 62 | 63 | .imageLable { 64 | position: relative; 65 | } 66 | #sendImage { 67 | position: absolute; 68 | width: 52px; 69 | left: 0; 70 | opacity: 0; 71 | overflow: hidden; 72 | } 73 | /*end custom file input*/ 74 | 75 | #messageInput { 76 | width: 440px; 77 | max-width: 440px; 78 | height: 90px; 79 | max-height: 90px; 80 | float:left; 81 | } 82 | #sendBtn { 83 | width: 50px; 84 | height: 96px; 85 | float: right; 86 | } 87 | #emojiWrapper { 88 | display: none; 89 | width: 500px; 90 | bottom: 105px; 91 | position: absolute; 92 | background-color: #aaa; 93 | box-shadow: 0 0 10px #555; 94 | } 95 | #emojiWrapper img { 96 | margin: 2px; 97 | padding: 2px; 98 | width: 25px; 99 | height: 25px; 100 | } 101 | #emojiWrapper img:hover { 102 | background-color: blue; 103 | } 104 | .emoji{ 105 | display: inline; 106 | } 107 | footer { 108 | text-align: center; 109 | } 110 | -------------------------------------------------------------------------------- /chartroom/site/www/public/styles/main.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | background-color: #efefef; 4 | font-family: sans-serif; 5 | } 6 | .wrapper { 7 | width: 500px; 8 | height: 640px; 9 | padding: 5px; 10 | margin: 0 auto; 11 | background-color: #ddd; 12 | } 13 | #loginWrapper { 14 | position: fixed; 15 | top: 0; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | background-color: rgba(5, 5, 5, .6); 20 | text-align: center; 21 | color: #fff; 22 | display: block; 23 | padding-top: 200px; 24 | } 25 | #nickWrapper { 26 | display: none; 27 | } 28 | .banner { 29 | height: 80px; 30 | width: 100%; 31 | } 32 | .banner p { 33 | float: left; 34 | display: inline-block; 35 | } 36 | .controls { 37 | height: 100px; 38 | margin: 5px 0px; 39 | position: relative; 40 | } 41 | #historyMsg { 42 | height: 400px; 43 | background-color: #fff; 44 | overflow: auto; 45 | padding: 2px; 46 | } 47 | #historyMsg img { 48 | max-width: 99%; 49 | } 50 | .timespan { 51 | color: #ddd; 52 | } 53 | .items { 54 | height: 30px; 55 | } 56 | #colorStyle { 57 | width: 50px; 58 | border: none; 59 | padding: 0; 60 | } 61 | /*custom the file input*/ 62 | 63 | .imageLable { 64 | position: relative; 65 | } 66 | #sendImage { 67 | position: absolute; 68 | width: 52px; 69 | left: 0; 70 | opacity: 0; 71 | overflow: hidden; 72 | } 73 | /*end custom file input*/ 74 | 75 | #messageInput { 76 | width: 440px; 77 | max-width: 440px; 78 | height: 90px; 79 | max-height: 90px; 80 | float:left; 81 | } 82 | #sendBtn { 83 | width: 50px; 84 | height: 96px; 85 | float: right; 86 | } 87 | #emojiWrapper { 88 | display: none; 89 | width: 500px; 90 | bottom: 105px; 91 | position: absolute; 92 | background-color: #aaa; 93 | box-shadow: 0 0 10px #555; 94 | } 95 | #emojiWrapper img { 96 | margin: 2px; 97 | padding: 2px; 98 | width: 25px; 99 | height: 25px; 100 | } 101 | #emojiWrapper img:hover { 102 | background-color: blue; 103 | } 104 | .emoji{ 105 | display: inline; 106 | } 107 | footer { 108 | text-align: center; 109 | } 110 | -------------------------------------------------------------------------------- /devTool/background.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | const {RegExpFilter} = require("filterClasses"); 21 | const {ElemHide} = require("elemHide"); 22 | const {checkWhitelisted} = require("whitelisting"); 23 | const {extractHostFromFrame} = require("url"); 24 | const {port} = require("messaging"); 25 | const devtools = require("devtools"); 26 | 27 | port.on("get-selectors", (msg, sender) => 28 | { 29 | let selectors; 30 | let trace = devtools && devtools.hasPanel(sender.page); 31 | 32 | if (!checkWhitelisted(sender.page, sender.frame, 33 | RegExpFilter.typeMap.DOCUMENT | 34 | RegExpFilter.typeMap.ELEMHIDE)) 35 | { 36 | let specificOnly = checkWhitelisted(sender.page, sender.frame, 37 | RegExpFilter.typeMap.GENERICHIDE); 38 | selectors = ElemHide.getSelectorsForDomain( 39 | extractHostFromFrame(sender.frame), 40 | specificOnly ? ElemHide.SPECIFIC_ONLY : ElemHide.ALL_MATCHING 41 | ); 42 | } 43 | else 44 | { 45 | selectors = []; 46 | } 47 | 48 | return {selectors: selectors, trace: trace}; 49 | }); 50 | 51 | port.on("forward", (msg, sender) => 52 | { 53 | let targetPage; 54 | if (msg.targetPageId) 55 | targetPage = ext.getPage(msg.targetPageId); 56 | else 57 | targetPage = sender.page; 58 | 59 | if (targetPage) 60 | { 61 | msg.payload.sender = sender.page.id; 62 | if (msg.expectsResponse) 63 | return new Promise(targetPage.sendMessage.bind(targetPage, msg.payload)); 64 | targetPage.sendMessage(msg.payload); 65 | } 66 | }); 67 | -------------------------------------------------------------------------------- /chartroom/site/www/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 米字棋-在线小游戏 7 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
    32 | 33 |
    34 |
    35 |
    36 | 37 |
    38 |
    39 |
    40 | 41 |
    42 |
    43 |
    44 |
    45 |
    46 | 49 |
    50 |
    51 |
    52 | 53 | 54 |
    55 |
    56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /devTool/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "update_url": "https://clients2.google.com/service/update2/crx", 3 | 4 | "author": "eyeo GmbH", 5 | "background": { 6 | "persistent": true, 7 | "scripts": [ 8 | "ext/common.js", 9 | "ext/background.js", 10 | "lib/compat.js", 11 | "lib/info.js", 12 | "lib/publicSuffixList.js", 13 | "lib/adblockplus.js", 14 | "messageResponder.js", 15 | "background.js" 16 | ] 17 | }, 18 | "browser_action": { 19 | "default_icon": { 20 | "16": "icons/abp-16.png", 21 | "19": "icons/abp-19.png", 22 | "20": "icons/abp-20.png", 23 | "32": "icons/abp-32.png", 24 | "38": "icons/abp-38.png", 25 | "40": "icons/abp-40.png" 26 | }, 27 | "default_popup": "popup.html", 28 | "default_title": "__MSG_name__" 29 | }, 30 | "content_scripts": [ 31 | { 32 | "all_frames": true, 33 | "js": [ 34 | "ext/common.js", 35 | "ext/content.js", 36 | "elemHideEmulation.js", 37 | "include.preload.js" 38 | ], 39 | "match_about_blank": true, 40 | "matches": [ 41 | "http://*/*", 42 | "https://*/*" 43 | ], 44 | "run_at": "document_start" 45 | }, 46 | { 47 | "all_frames": true, 48 | "js": [ 49 | "include.postload.js" 50 | ], 51 | "match_about_blank": true, 52 | "matches": [ 53 | "http://*/*", 54 | "https://*/*" 55 | ], 56 | "run_at": "document_end" 57 | } 58 | ], 59 | "default_locale": "en_US", 60 | "description": "__MSG_description__", 61 | "devtools_page": "devtools.html", 62 | "icons": { 63 | "128": "icons/detailed/abp-128.png", 64 | "16": "icons/abp-16.png", 65 | "32": "icons/abp-32.png", 66 | "48": "icons/detailed/abp-48.png", 67 | "64": "icons/detailed/abp-64.png" 68 | }, 69 | "manifest_version": 2, 70 | "minimum_chrome_version": "49.0", 71 | "minimum_opera_version": "36.0", 72 | "name": "__MSG_name__", 73 | "options_ui": { 74 | "open_in_tab": true, 75 | "page": "options.html" 76 | }, 77 | "permissions": [ 78 | "tabs", 79 | "http://*/*", 80 | "https://*/*", 81 | "contextMenus", 82 | "webRequest", 83 | "webRequestBlocking", 84 | "webNavigation", 85 | "storage", 86 | "unlimitedStorage", 87 | "notifications" 88 | ], 89 | "short_name": "__MSG_name__", 90 | "storage": { 91 | "managed_schema": "managed-storage-schema.json" 92 | }, 93 | "version": "1.13.2" 94 | } -------------------------------------------------------------------------------- /ElementBlurTool/background/myscript.js: -------------------------------------------------------------------------------- 1 | //这是背景页的代码 2 | 3 | (function (global) { 4 | 5 | /**localStorage value type is always string, we should convert it into number when need*/ 6 | var currentChannel = Number(localStorage["BLURChannel"]) || 1; 7 | var disableExtension = Number(localStorage["BLURDisabled"]) || 0; 8 | 9 | //创建右键菜单 10 | var contextMenuId = chrome.contextMenus.create({ 11 | "title" : "模糊处理", 12 | "contexts" : ["all"] 13 | }); 14 | 15 | //监听右键菜单,一旦被点击,则通知前台 16 | chrome.contextMenus.onClicked.addListener(function (tab) { 17 | var transstorage = currentChannel; 18 | // Send a message to the active tab 19 | chrome.tabs.query({ 20 | active : true, 21 | currentWindow : true 22 | }, function (tabs) { 23 | var activeTab = tabs[0]; 24 | //chrome.tabs.sendMessage(activeTab.id, {"message": transstorage}); 25 | for (var i = 0; i < 1; i++) { 26 | chrome.tabs.sendMessage(activeTab.id, { 27 | "channelmsg" : transstorage 28 | }); 29 | } 30 | }); 31 | }); 32 | 33 | //更新参数 34 | function updateExtensionStatus() { 35 | chrome.browserAction.setIcon({ 36 | path : "icons/icon48" + (disableExtension ? "_disabled" : "") + ".png" 37 | }); 38 | 39 | /**create or remove chrome context menus*/ 40 | if (disableExtension === 1) { 41 | typeof contextMenuId !== 'undefined' && chrome.contextMenus.remove(contextMenuId); 42 | /*typeof contextMenuId!=='undefined'&&chrome.contextMenus.remove(contextMenuId, function () { 43 | alert("menu removed"); 44 | });*/ 45 | 46 | contextMenuId = undefined; 47 | } else { 48 | if (contextMenuId == undefined) { 49 | contextMenuId = chrome.contextMenus.create({ 50 | "title" : "模糊处理", 51 | "contexts" : ["all"] 52 | }); 53 | } 54 | 55 | } 56 | } 57 | 58 | //该方法会在设置值发生改变的时候进行调用 59 | global.updateQTExtension = function () { 60 | currentChannel = Number(localStorage["BLURChannel"]) || 1; 61 | disableExtension = Number(localStorage["BLURDisabled"]); 62 | updateExtensionStatus(); 63 | console.log("current channel:"+currentChannel); 64 | }; 65 | 66 | global.tellContentChange = function () { 67 | chrome.tabs.query({ 68 | active : true, 69 | currentWindow : true 70 | }, function (tabs) { 71 | var activeTab = tabs[0]; 72 | //chrome.tabs.sendMessage(activeTab.id, {"message": transstorage}); 73 | for (var i = 0; i < 1; i++) { 74 | chrome.tabs.sendMessage(activeTab.id, { 75 | "cmd" : "changepx", 76 | "channelmsg":currentChannel 77 | }); 78 | } 79 | }); 80 | }; 81 | 82 | updateExtensionStatus(); 83 | })(window); -------------------------------------------------------------------------------- /devTool/composer.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | let targetPageId = null; 21 | 22 | function onKeyDown(event) 23 | { 24 | if (event.keyCode == 27) 25 | { 26 | event.preventDefault(); 27 | closeDialog(); 28 | } 29 | else if (event.keyCode == 13 && !event.shiftKey && !event.ctrlKey) 30 | { 31 | event.preventDefault(); 32 | addFilters(); 33 | } 34 | } 35 | 36 | function addFilters() 37 | { 38 | ext.backgroundPage.sendMessage( 39 | { 40 | type: "filters.importRaw", 41 | text: document.getElementById("filters").value 42 | }, 43 | errors => 44 | { 45 | if (errors.length > 0) 46 | alert(errors.join("\n")); 47 | else 48 | closeDialog(true); 49 | }); 50 | } 51 | 52 | function closeDialog(success) 53 | { 54 | ext.backgroundPage.sendMessage( 55 | { 56 | type: "forward", 57 | targetPageId: targetPageId, 58 | payload: 59 | { 60 | type: "composer.content.finished", 61 | remove: (typeof success == "boolean" ? success : false) 62 | } 63 | }); 64 | window.close(); 65 | } 66 | 67 | function init() 68 | { 69 | // Attach event listeners 70 | window.addEventListener("keydown", onKeyDown, false); 71 | 72 | document.getElementById("addButton").addEventListener("click", addFilters); 73 | document.getElementById("cancelButton").addEventListener( 74 | "click", closeDialog.bind(null, false) 75 | ); 76 | 77 | // Apply jQuery UI styles 78 | $("button").button(); 79 | 80 | document.getElementById("filters").focus(); 81 | 82 | ext.onMessage.addListener((msg, sender, sendResponse) => 83 | { 84 | switch (msg.type) 85 | { 86 | case "composer.dialog.init": 87 | targetPageId = msg.sender; 88 | document.getElementById("filters").value = msg.filters.join("\n"); 89 | break; 90 | case "composer.dialog.close": 91 | window.close(); 92 | break; 93 | } 94 | }); 95 | 96 | window.removeEventListener("load", init); 97 | } 98 | window.addEventListener("load", init, false); 99 | -------------------------------------------------------------------------------- /ElementBlurTool/popup/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 网页元素模糊插件 10 | 11 | 12 |
    网页元素模糊插件 13 |
    15 |
    16 |
    17 |
    18 |
      19 |
    • 20 | 24 |
    • 25 |
    • 26 | 30 |
    • 31 |
    • 32 | 36 |
    • 37 |
    • 38 | 42 |
    • 43 |
    • 44 | 52 |
    • 53 |
    54 |
    55 | 56 |
    57 |
    58 |
    59 |
    60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/signum.js.下载: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | var $container = $('#introduction'); 4 | 5 | var two = new Two({ 6 | width: 285, 7 | height: 80, 8 | type: Two.Types.svg 9 | }).appendTo($container[0]); 10 | 11 | var width = 44, height = 64; 12 | var half_width = width / 2; 13 | var quart_width = half_width / 2; 14 | var half_height = height / 2; 15 | var quart_height = half_height / 2; 16 | 17 | var t = makeT(255, 64, 64); 18 | t.scale = 0; 19 | t.translation.x = - width * 1.33; 20 | 21 | var w = makeW(255, 128, 0); 22 | w.scale = 0; 23 | w.translation.x = 0; 24 | 25 | var o = makeO(0, 191, 168); 26 | o.scale = 0; 27 | o.translation.x = width * 1.33; 28 | 29 | var group = two.makeGroup(t, w, o); 30 | group.translation.set(two.width / 2, two.height / 2); 31 | group.scale = 3 * (285 / 486); 32 | 33 | t.scale = w.scale = o.scale = 0; 34 | 35 | two 36 | .bind('update', function(frames) { 37 | 38 | var tScale = t.scale; 39 | 40 | if (tScale >= 1.0 - 0.0001) { 41 | two.pause(); 42 | return; 43 | } 44 | 45 | var s = tScale + (1.0 - tScale) * 0.2; 46 | t.scale = s; 47 | w.scale = s; 48 | o.scale = s; 49 | 50 | }); 51 | 52 | _.defer(_.bind(two.play, two)); 53 | 54 | function makeT(r, g, b) { 55 | 56 | var a = two.makeRectangle(0, 0, width, quart_width); 57 | var c = two.makeRectangle(0, 0, quart_width, width); 58 | var rgb = r +',' + g + ',' + b; 59 | 60 | a.fill = c.fill = 'rgba(' + rgb + ',' + 0.33 + ')'; 61 | a.stroke = c.stroke = 'rgb(' + rgb + ')'; 62 | a.linewidth = c.linewidth = 1; 63 | 64 | return two.makeGroup(a, c); 65 | 66 | } 67 | 68 | function makeW(r, g, b) { 69 | 70 | var x1 = 0, y1 = height * 0.3125; 71 | var x2 = half_width, y2 = - y1; 72 | var x3 = - x2, y3 = y2; 73 | 74 | var a = two.makePath(x1, y1, x2, y2, x3, y3); 75 | var c = two.makePath(x1, y1, x2, y2, x3, y3); 76 | 77 | a.translation.x = - width * 0.25; 78 | c.translation.set(a.translation.x + half_width, a.translation.y); 79 | 80 | var rgb = Math.round(r) +',' + Math.round(g) + ',' + Math.round(b); 81 | 82 | a.fill = c.fill = 'rgba(' + rgb + ',' + 0.33 + ')'; 83 | a.stroke = c.stroke = 'rgb(' + rgb + ')'; 84 | a.linewidth = c.linewidth = 1; 85 | 86 | return two.makeGroup(a, c); 87 | 88 | } 89 | 90 | function makeO(r, g, b) { 91 | 92 | var a = two.makeCircle(0, 0, half_width); 93 | var c = two.makeCircle(0, 0, width * 0.125); 94 | var rgb = Math.round(r) +',' + Math.round(g) + ',' + Math.round(b); 95 | 96 | a.fill = c.fill = 'rgba(' + rgb + ',' + 0.33 + ')'; 97 | a.stroke = c.stroke = 'rgb(' + rgb + ')'; 98 | a.linewidth = c.linewidth = 1; 99 | 100 | return two.makeGroup(a, c); 101 | 102 | } 103 | 104 | }); 105 | -------------------------------------------------------------------------------- /devTool/composer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 22 | 23 | Block element 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 88 | 89 | 90 | 91 |
    92 | 93 | 94 |
    95 | 96 | 97 | 98 |
    99 | 100 | 101 |
    102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /chartroom/site/www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | hichat 10 | 11 | 12 | 13 | 14 | 15 |
    16 | 20 |
    21 |
    22 |
    23 |
    24 | 25 | 26 | 30 | 31 |
    32 | 33 | 34 |
    35 |
    36 |
    37 |
    38 |
    39 |

    connecting to server...

    40 |
    41 | 42 | 43 |
    44 |
    45 | 48 | 49 | 50 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /ElementBlurTool/popup/options.js: -------------------------------------------------------------------------------- 1 | //这是选项页面的js 2 | $(function () { 3 | disableExtension = Number(localStorage["BLURDisabled"]); 4 | selectedChannel = localStorage["BLURChannel"] || '1'; 5 | 6 | //根据插件可用参数,来设置插件设置页面的外观 7 | if(disableExtension===1){ 8 | $("#checkbox").attr("checked",false); 9 | $("fieldSet").attr("disabled",true).toggleClass("disabled"); 10 | $("#cancel").toggleClass("btns"); 11 | } 12 | else 13 | { 14 | $("#checkbox").attr("checked",true); 15 | } 16 | 17 | //动态模糊值框的赋值 18 | $("#shownum").text(localStorage["BLURdynamicnum"] || 5); 19 | $("#dynamicnum").val(localStorage["BLURdynamicnum"] || 5); 20 | 21 | //根据插件频道参数,来设置复选框 22 | $("li input").each(function(){ 23 | console.log($(this).val()); 24 | if($(this).val()==selectedChannel) 25 | { 26 | $(this).click(); 27 | } 28 | else 29 | { 30 | if(selectedChannel>5) 31 | { 32 | $("#shownum").text(selectedChannel); 33 | $("#dynamicnum").val(selectedChannel); 34 | $("#dynamicnum").click(); 35 | } 36 | } 37 | }); 38 | 39 | //处理开启按钮的点击事件 40 | $("#checkbox").click(function(){ 41 | disableExtension = Number(localStorage["BLURDisabled"]) === 1 ? 0 : 1; 42 | localStorage["BLURDisabled"] = disableExtension; 43 | chrome.extension.getBackgroundPage().updateQTExtension(); 44 | 45 | if(disableExtension===1){ 46 | $("#checkbox").attr("checked",false); 47 | $("fieldSet").attr("disabled",true).toggleClass("disabled"); 48 | $("#cancel").toggleClass("btns"); 49 | }else{ 50 | $("#checkbox").attr("checked",true); 51 | $("fieldSet").attr("disabled",false).toggleClass("disabled"); 52 | $("#cancel").toggleClass("btns"); 53 | } 54 | }); 55 | 56 | //处理模糊选项的点击事件 57 | $("li input").click(function(){ 58 | localStorage["BLURChannel"] = $(this).val(); 59 | chrome.extension.getBackgroundPage().updateQTExtension(); 60 | chrome.extension.getBackgroundPage().tellContentChange(); 61 | }); 62 | 63 | //处理取消模糊元素点击事件 64 | $("#cancel").click(function(){ 65 | sendCmd("cancel"); 66 | }); 67 | 68 | //增加模糊值 69 | $("#plus").click(function(){ 70 | var num = parseInt($("#shownum").text()); 71 | var nextnum = num+1; 72 | if(nextnum>=5 && nextnum<=20) 73 | { 74 | $("#shownum").text(nextnum); 75 | $("#dynamicnum").val(nextnum); 76 | localStorage["BLURdynamicnum"] = nextnum; 77 | } 78 | }); 79 | 80 | //减小模糊值 81 | $("#minus").click(function(){ 82 | var num = parseInt($("#shownum").text()); 83 | var nextnum = num-1; 84 | if(nextnum>=5 && nextnum<=20) 85 | { 86 | $("#shownum").text(nextnum); 87 | $("#dynamicnum").val(nextnum); 88 | localStorage["BLURdynamicnum"] = nextnum; 89 | } 90 | }); 91 | 92 | //发送消息的方法 93 | function sendCmd(str){ 94 | var optionmsg = str; 95 | // Send a message to the active tab 96 | chrome.tabs.query({ 97 | active : true, 98 | currentWindow : true 99 | }, function (tabs) { 100 | var activeTab = tabs[0]; 101 | //chrome.tabs.sendMessage(activeTab.id, {"message": transstorage}); 102 | for (var i = 0; i < 1; i++) { 103 | chrome.tabs.sendMessage(activeTab.id, { 104 | "cmd" : optionmsg 105 | }); 106 | } 107 | }); 108 | } 109 | 110 | }); -------------------------------------------------------------------------------- /devTool/ext/common.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | { 21 | var ext = {}; 22 | 23 | let EventTarget = ext._EventTarget = function() 24 | { 25 | this._listeners = []; 26 | }; 27 | EventTarget.prototype = { 28 | addListener(listener) 29 | { 30 | if (this._listeners.indexOf(listener) == -1) 31 | this._listeners.push(listener); 32 | }, 33 | removeListener(listener) 34 | { 35 | let idx = this._listeners.indexOf(listener); 36 | if (idx != -1) 37 | this._listeners.splice(idx, 1); 38 | }, 39 | _dispatch() 40 | { 41 | let results = []; 42 | let listeners = this._listeners.slice(); 43 | 44 | for (let listener of listeners) 45 | results.push(listener.apply(null, arguments)); 46 | 47 | return results; 48 | } 49 | }; 50 | } 51 | 52 | /* 53 | * This file is part of Adblock Plus , 54 | * Copyright (C) 2006-2016 Eyeo GmbH 55 | * 56 | * Adblock Plus is free software: you can redistribute it and/or modify 57 | * it under the terms of the GNU General Public License version 3 as 58 | * published by the Free Software Foundation. 59 | * 60 | * Adblock Plus is distributed in the hope that it will be useful, 61 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 62 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 63 | * GNU General Public License for more details. 64 | * 65 | * You should have received a copy of the GNU General Public License 66 | * along with Adblock Plus. If not, see . 67 | */ 68 | 69 | "use strict"; 70 | 71 | { 72 | // Workaround since HTMLCollection and NodeList didn't have iterator support 73 | // before Chrome 51. 74 | // https://bugs.chromium.org/p/chromium/issues/detail?id=401699 75 | if (!(Symbol.iterator in HTMLCollection.prototype)) 76 | HTMLCollection.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator]; 77 | if (!(Symbol.iterator in NodeList.prototype)) 78 | NodeList.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator]; 79 | 80 | /* Message passing */ 81 | 82 | ext.onMessage = new ext._EventTarget(); 83 | 84 | 85 | /* Background page */ 86 | 87 | ext.backgroundPage = { 88 | sendMessage: chrome.runtime.sendMessage, 89 | getWindow() 90 | { 91 | return chrome.extension.getBackgroundPage(); 92 | } 93 | }; 94 | 95 | 96 | /* Utils */ 97 | 98 | ext.getURL = chrome.extension.getURL; 99 | ext.i18n = chrome.i18n; 100 | } 101 | 102 | -------------------------------------------------------------------------------- /chartroom/site/www/scripts/game.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by mimig on 2017/7/23. 3 | */ 4 | $(function () { 5 | var hichat = new HiChat(); 6 | hichat.init(); 7 | }); 8 | var HiChat = function() { 9 | this.socket = null; 10 | }; 11 | HiChat.prototype = { 12 | init: function() { 13 | var that = this; 14 | this.socket = io.connect(); 15 | this.socket.on('connect', function () { 16 | console.log("connect success!"); 17 | that.socket.emit('login', "wo"); 18 | }); 19 | this.socket.on('newMsg', function (msg) { 20 | console.log('receive:', msg); 21 | that._displayNewMsg('网友',msg); 22 | //that._moveChess(that,msg); 23 | }); 24 | this.socket.on('newMove', function (user, msg, color) { 25 | console.log('receive:', msg); 26 | that._moveChess(that, msg); 27 | }); 28 | $(".black,.white").draggable({ 29 | revert: "invalid" 30 | }); 31 | $(".empty").droppable({ 32 | drop: that._dropFunc(that), 33 | }); 34 | $("#sendBtn").on('click', function () { 35 | var msg = $("#messageInput").val(); 36 | $("#messageInput").val(''); 37 | that._displayNewMsg('我',msg); 38 | that.socket.emit('postMsg',msg); 39 | }); 40 | $("body").keydown(function() { 41 | if (event.keyCode == "13") {//keyCode=13是回车键 42 | $('#sendBtn').click(); 43 | } 44 | }); 45 | }, 46 | _dropFunc:function(that) { 47 | var connection = that; 48 | //this.socket.emit('img', e.target.result, color); 49 | //or return {} 50 | return function (event, ui) { 51 | var color = ui.draggable.hasClass('black') ? 'black' : 'white'; 52 | var start = ui.helper.attr('No'); 53 | var stop = $(this).attr('No'); 54 | $('
    ').replaceAll($(ui.helper)); 55 | $('
    ').replaceAll($(this)); 56 | $("." + color).draggable({ 57 | revert: "invalid" 58 | }); 59 | $(".empty").droppable({ 60 | drop: connection._dropFunc(connection), 61 | }); 62 | msg = { 63 | start: start, 64 | stop: stop, 65 | color: color 66 | }; 67 | console.log('send:',msg); 68 | connection.socket.emit('postMove',msg, color); 69 | } 70 | }, 71 | _moveChess:function (connection,msg) { 72 | var start = msg.start, 73 | stop = msg.stop, 74 | color = msg.color; 75 | $('
    ').replaceAll($('.cell[No$='+start+']')); 76 | $('
    ').replaceAll($('.cell[No$='+stop+']')); 77 | $("." + color).draggable({ 78 | revert: "invalid" 79 | }); 80 | $(".empty").droppable({ 81 | drop: connection._dropFunc(connection), 82 | }); 83 | }, 84 | _displayNewMsg: function(user,msg) { 85 | var date = new Date().toTimeString().substr(0, 8); 86 | $('

    ').html(user + '(' + date + '): ' + msg) 87 | .appendTo($('#historyMsg')) 88 | $('#historyMsg').scrollTop($('#historyMsg')[0].scrollHeight); 89 | }, 90 | }; -------------------------------------------------------------------------------- /chartroom/site/newserver.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | app = express(), 3 | path = require('path'), 4 | server = require('http').createServer(app), 5 | io = require('socket.io').listen(server), 6 | users = [], 7 | roomInfo = {outside:[]}, 8 | socketJson = []; 9 | var handlebars = require('express-handlebars').create({ 10 | defaultLayout:'main', 11 | }); 12 | io.set('log level', 1); 13 | app.engine('handlebars', handlebars.engine); 14 | app.set('view engine', 'handlebars'); 15 | 16 | //specify the html we will use 17 | app.use(express.static(path.join(__dirname, 'public'))); 18 | app.use(require('body-parser')()); 19 | /********** 20 | * 我的路由 21 | * *******/ 22 | app.get('/',function (req,res) { 23 | //res.json({a:10}); 24 | res.render('index'); 25 | }); 26 | 27 | app.get('/test',function (req,res) { 28 | //res.json({a:10}); 29 | res.render('test'); 30 | }); 31 | 32 | app.get('/all_rooms',function (req,res) { 33 | res.json(roomInfo); 34 | }); 35 | 36 | app.get('/sockets',function (req,res) { 37 | res.json(socketJson); 38 | }); 39 | 40 | app.get(/\/room\/([\w]+).*/,function (req,res) { 41 | res.render('index'); 42 | }); 43 | /*********** 44 | * 路由结束 45 | **********/ 46 | function getRoomID(socket){ 47 | var url = socket.handshake.headers.referer, 48 | id_res = url.match(/^.*\/room\/([\w]+).*/), 49 | roomID; 50 | if(id_res){ 51 | roomID = id_res[1]; 52 | }else { 53 | roomID = 1000; 54 | } 55 | return roomID; 56 | } 57 | 58 | //server.listen(3000);//for local test 59 | server.listen(process.env.PORT || 3114); 60 | //handle the socket 61 | 62 | io.on('connect', function (socket) { 63 | var roomID = getRoomID(socket); 64 | console.log('get room id:',roomID); 65 | 66 | socket.join(roomID); 67 | console.log('room id and num of users:',roomID,roomInfo[roomID]); 68 | 69 | //房间情况 70 | if(roomInfo[roomID]>=2){ 71 | socket.emit('system',{status:'1',msg:"房间已经满了,只能观战!"}); 72 | roomInfo.outside.push(socket.id); 73 | console.log("outside:",roomInfo); 74 | socket.to(roomID).emit('system',{status:'0',msg:'1人前来观战!'+roomID}); 75 | console.log('fuuuuuuull'); 76 | }else { 77 | if (roomID in roomInfo) { 78 | socket.emit('system',{status:'0',msg:'加入房间'+roomID}); 79 | socket.to(roomID).emit('system',{status:'0',msg:'1人加入房间'+roomID}); 80 | } 81 | } 82 | 83 | if (roomID in roomInfo){ 84 | roomInfo[roomID]++; 85 | }else { 86 | roomInfo[roomID] = 1; 87 | } 88 | 89 | socket.on('disconnect', function() { 90 | var roomID = getRoomID(socket); 91 | roomInfo[roomID]--; 92 | socket.to(roomID).emit('system',{status:'0',msg:'1人离开房间'+roomID}); 93 | if(roomInfo[roomID] <= 2){ 94 | socket.to(roomInfo.outside[0]).emit('system',{status:'2',msg:'轮到你玩了!'}); 95 | } 96 | for (var i in roomInfo.outside){ 97 | if(roomInfo.outside[i] === socket.id) roomInfo.outside.splice(i, 1); 98 | } 99 | }); 100 | 101 | //on new message 102 | socket.on('postMsg', function(msg) { 103 | var roomID = getRoomID(socket); 104 | socket.to(roomID).emit('newMsg', {msg:msg,user:socket.id,notMe:false}); 105 | }); 106 | 107 | //chess move 108 | socket.on('postMove', function(msg, color) { 109 | var roomID = getRoomID(socket); 110 | io.sockets.to(roomID).emit('newMove', 1, msg); 111 | }); 112 | 113 | }); 114 | -------------------------------------------------------------------------------- /chartroom/site/www/public/scripts/game.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by mimig on 2017/7/23. 3 | */ 4 | $(function () { 5 | var hichat = new HiChat(); 6 | hichat.init(); 7 | }); 8 | var HiChat = function() { 9 | this.socket = null; 10 | }; 11 | HiChat.prototype = { 12 | init: function() { 13 | var that = this; 14 | this.socket = io.connect(); 15 | this.socket.on('connect', function () { 16 | console.log("connect success!"); 17 | that.socket.emit('login', "wo"); 18 | }); 19 | this.socket.on('newMsg', function (msg) { 20 | console.log('receive:', msg); 21 | that._displayNewMsg('网友',msg); 22 | //that._moveChess(that,msg); 23 | }); 24 | this.socket.on('newMove', function (user, msg, color) { 25 | console.log('receive:', msg); 26 | that._moveChess(that, msg); 27 | }); 28 | $(".black,.white").draggable({ 29 | revert: "invalid" 30 | }); 31 | $(".empty").droppable({ 32 | drop: that._dropFunc(that), 33 | }); 34 | $("#sendBtn").on('click', function () { 35 | var msg = $("#messageInput").val(); 36 | $("#messageInput").val(''); 37 | that._displayNewMsg('我',msg); 38 | that.socket.emit('postMsg',msg); 39 | }); 40 | $("body").keydown(function() { 41 | if (event.keyCode == "13") {//keyCode=13是回车键 42 | $('#sendBtn').click(); 43 | } 44 | }); 45 | }, 46 | _dropFunc:function(that) { 47 | var connection = that; 48 | //this.socket.emit('img', e.target.result, color); 49 | //or return {} 50 | return function (event, ui) { 51 | var color = ui.draggable.hasClass('black') ? 'black' : 'white'; 52 | var start = ui.helper.attr('No'); 53 | var stop = $(this).attr('No'); 54 | $('

    ').replaceAll($(ui.helper)); 55 | $('
    ').replaceAll($(this)); 56 | $("." + color).draggable({ 57 | revert: "invalid" 58 | }); 59 | $(".empty").droppable({ 60 | drop: connection._dropFunc(connection), 61 | }); 62 | msg = { 63 | start: start, 64 | stop: stop, 65 | color: color 66 | }; 67 | console.log('send:',msg); 68 | connection.socket.emit('postMove',msg, color); 69 | } 70 | }, 71 | _moveChess:function (connection,msg) { 72 | var start = msg.start, 73 | stop = msg.stop, 74 | color = msg.color; 75 | $('
    ').replaceAll($('.cell[No$='+start+']')); 76 | $('
    ').replaceAll($('.cell[No$='+stop+']')); 77 | $("." + color).draggable({ 78 | revert: "invalid" 79 | }); 80 | $(".empty").droppable({ 81 | drop: connection._dropFunc(connection), 82 | }); 83 | }, 84 | _displayNewMsg: function(user,msg) { 85 | var date = new Date().toTimeString().substr(0, 8); 86 | $('

    ').html(user + '(' + date + '): ' + msg) 87 | .appendTo($('#historyMsg')) 88 | $('#historyMsg').scrollTop($('#historyMsg')[0].scrollHeight); 89 | }, 90 | }; -------------------------------------------------------------------------------- /devTool/notification.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | const {Utils} = require("utils"); 21 | const {Notification} = require("notification"); 22 | const {getActiveNotification, shouldDisplay} = require("notificationHelper"); 23 | 24 | function getDocLinks(notification) 25 | { 26 | if (!notification.links) 27 | return []; 28 | 29 | let docLinks = []; 30 | notification.links.forEach(link => 31 | { 32 | docLinks.push(Utils.getDocLink(link)); 33 | }); 34 | return docLinks; 35 | } 36 | 37 | function insertMessage(element, text, links) 38 | { 39 | let match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(text); 40 | if (!match) 41 | { 42 | element.appendChild(document.createTextNode(text)); 43 | return; 44 | } 45 | 46 | let before = match[1]; 47 | let tagName = match[2]; 48 | let value = match[3]; 49 | let after = match[4]; 50 | 51 | insertMessage(element, before, links); 52 | 53 | let newElement = document.createElement(tagName); 54 | if (tagName === "a" && links && links.length) 55 | newElement.href = links.shift(); 56 | insertMessage(newElement, value, links); 57 | element.appendChild(newElement); 58 | 59 | insertMessage(element, after, links); 60 | } 61 | 62 | window.addEventListener("load", () => 63 | { 64 | let notification = getActiveNotification(); 65 | if (!notification || !shouldDisplay("popup", notification.type)) 66 | return; 67 | 68 | let texts = Notification.getLocalizedTexts(notification); 69 | let titleElement = document.getElementById("notification-title"); 70 | titleElement.textContent = texts.title; 71 | 72 | let docLinks = getDocLinks(notification); 73 | let messageElement = document.getElementById("notification-message"); 74 | insertMessage(messageElement, texts.message, docLinks); 75 | 76 | messageElement.addEventListener("click", event => 77 | { 78 | let link = event.target; 79 | while (link && link !== messageElement && link.localName !== "a") 80 | link = link.parentNode; 81 | if (!link) 82 | return; 83 | event.preventDefault(); 84 | event.stopPropagation(); 85 | ext.pages.open(link.href); 86 | }); 87 | 88 | let notificationElement = document.getElementById("notification"); 89 | notificationElement.className = notification.type; 90 | notificationElement.hidden = false; 91 | notificationElement.addEventListener("click", event => 92 | { 93 | switch (event.target.id) 94 | { 95 | case "notification-close": 96 | notificationElement.classList.add("closing"); 97 | break; 98 | case "notification-optout": 99 | Notification.toggleIgnoreCategory("*", true); 100 | case "notification-hide": 101 | notificationElement.hidden = true; 102 | notification.onClicked(); 103 | break; 104 | } 105 | }, true); 106 | }, false); 107 | -------------------------------------------------------------------------------- /devTool/_locales/sw/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "message": "kuongeza filter watu" 4 | }, 5 | "add_domain_button": { 6 | "message": "kuongeza miliki" 7 | }, 8 | "add_filter_button": { 9 | "message": "kuongeza filter" 10 | }, 11 | "add_filters_msg": { 12 | "message": "kuongeza filter(s) ?" 13 | }, 14 | "add_your_own_filters": { 15 | "message": "kuongeza filters yako mwenyewe" 16 | }, 17 | "apply_changes": { 18 | "message": "kuomba mabadiliko" 19 | }, 20 | "block_element": { 21 | "message": "kuzuia kipengele" 22 | }, 23 | "cancel": { 24 | "message": "kufuta" 25 | }, 26 | "clickhide_instructions": { 27 | "message": "baada ya kufunga dukizi hii , click (au haki-click ) kipengele kwenye ukurasa huu." 28 | }, 29 | "description": { 30 | "description": "Note: this cannot be longer than 132 characters", 31 | "message": "Used on over 100 million devices, Adblock Plus is the world's most popular ad blocker." 32 | }, 33 | "disabled_for_site": { 34 | "message": "walemavu kwenye tovuti hii" 35 | }, 36 | "disabled_for_these_domains": { 37 | "message": "Adblock Plus pamoja ni walemavu kwa ajili ya nyanja hapa chini. Unaweza kuongeza miliki aidha kupitia Adblock Plus pamoja na icon katika bar anwani au kwa kuandika miliki (sio URL) katika sanduku na kubonyeza \" kuongeza miliki \" kifungo ." 38 | }, 39 | "easy_create_filter": { 40 | "message": "kuzuia kipengele" 41 | }, 42 | "edit_filters_raw": { 43 | "message": "hariri filter kama maandishi mbichi" 44 | }, 45 | "enable_only_the": { 46 | "message": "Kuwawezesha tu orodha filter unahitaji. Wengi mno wanaweza kufanya browser yako imekwama." 47 | }, 48 | "enabled_for_site": { 49 | "message": "Kuwezeshwa kwenye tovuti hii" 50 | }, 51 | "filter_lists": { 52 | "message": "filter listd" 53 | }, 54 | "filter_must_follow_syntax": { 55 | "message": "Filter yako lazima kufuata Adblock Plus chujio syntax ." 56 | }, 57 | "found_a_bug": { 58 | "message": "Kupatikana mdudu ? Wanataka kutafsiri Adblock Plus katika lugha yako ? Tafadhali faili ombi hapa ." 59 | }, 60 | "general": { 61 | "message": "ujumla" 62 | }, 63 | "invalid_css_selector": { 64 | "message": "$selector$ si halali CSS selector", 65 | "placeholders": { 66 | "selector": { 67 | "content": "$1" 68 | } 69 | } 70 | }, 71 | "last_updated_at": { 72 | "message": "mwisho updated saa $time$ juu ya $date$", 73 | "placeholders": { 74 | "date": { 75 | "content": "$2" 76 | }, 77 | "time": { 78 | "content": "$1" 79 | } 80 | } 81 | }, 82 | "last_updated_at_today": { 83 | "message": "mwisho updated saa $time$ leo", 84 | "placeholders": { 85 | "time": { 86 | "content": "$1" 87 | } 88 | } 89 | }, 90 | "line": { 91 | "message": "mstari $number$", 92 | "placeholders": { 93 | "number": { 94 | "content": "$1" 95 | } 96 | } 97 | }, 98 | "name": { 99 | "message": "Adblock Plus" 100 | }, 101 | "name_devbuild": { 102 | "message": "Adblock Plus pamoja na maendeleo ya kujenga" 103 | }, 104 | "notification_with_buttons": { 105 | "message": "Bonyeza 'OK' kufungua viungo vyote katika taarifa hii." 106 | }, 107 | "notification_without_buttons": { 108 | "message": "Bonyeza kwenye taarifa ya kufungua viungo vyote ndani yake." 109 | }, 110 | "options": { 111 | "message": "Adblock Plus options" 112 | }, 113 | "options_short": { 114 | "message": "chaguzi" 115 | }, 116 | "out_of_date_lists": { 117 | "message": "Nje ya tarehe orodha ni updated mara kwa mara." 118 | }, 119 | "remove_button": { 120 | "message": "ut kuondoa" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /devTool/devtools-panel.html: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |

    eerer

    30 |
    31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 63 | 64 | 65 | 71 | 74 | 80 | 81 |
    39 | Show 40 | 45 | items of 46 | 61 | type 62 |
    66 |
    67 |
    Request
    68 |
    Document domain
    69 |
    70 |
    72 |
    Type
    73 |
    75 |
    76 |
    Filter
    77 |
    Origin
    78 |
    79 |
    82 |
    83 |
    84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 |
    93 |
    94 |
    95 | Reload page to see effect of filter changes 96 |
    97 | 98 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /devTool/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
    35 | 36 |
    37 | 38 |
    39 | 54 | 55 |
    56 | 57 | 103 |
    104 | 105 |
    106 |
    107 | 108 |
    109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /devTool/firstRun.html: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
    36 | 37 |

    38 |
    39 | 40 | 41 | 42 |
    43 |
    44 |
    45 |

    46 |

    47 |
    48 | 60 |
    61 | 62 | 63 |
    64 |

    65 | 66 |
    67 | 68 | 69 |
    70 | 71 |
    72 | 80 | 81 | 82 | 88 | 89 |
    90 |
    91 | 92 |
    93 | 94 |
    95 | 96 |
    97 | 98 | 99 | -------------------------------------------------------------------------------- /googleTranslateUpper/popup/styles/options.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | /* CSS Document */ 3 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;} 4 | body{font-family:tahoma,"宋体",Simsun, Microsoft YaHei, Arial Unicode MS, Mingliu, Arial, Helvetica;} 5 | table{border-collapse:collapse;border-spacing:0;} 6 | fieldset,img{border:0;} 7 | address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;} 8 | ol,ul{list-style:none;} 9 | caption,th{text-align:left;} 10 | h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} 11 | q:before,q:after{content:"";} 12 | .hide{display: none;} 13 | .btns { 14 | moz-box-shadow: inset 0px 1px 0px 0px #cae3fc; 15 | -webkit-box-shadow: inset 0px 1px 0px 0px #cae3fc; 16 | box-shadow: inset 0px 1px 0px 0px #1e4770; 17 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #4197ee), color-stop(1, #79bbff) ); 18 | background: -moz-linear-gradient( center top, #79bbff 5%, #4197ee 100% ); 19 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#79bbff', endColorstr='#4197ee'); 20 | background-color: #79bbff; 21 | -moz-border-radius: 4px; 22 | -webkit-border-radius: 4px; 23 | border-radius: 4px; 24 | border: 1px solid #4197ee; 25 | display: inline-block; 26 | color: #ffffff; 27 | font-family: arial; 28 | font-size: 14px; 29 | font-weight: bold; 30 | padding: 7px 22px; 31 | text-decoration: none; 32 | text-shadow: 1px 1px 0px #79bbff; 33 | cursor: pointer; 34 | } 35 | .btns:hover { 36 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1FB862), color-stop(1, #5AF59E) ); 37 | background:-moz-linear-gradient( center top, #4197ee 5%, #79bbff 100% ); 38 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4197ee', endColorstr='#79bbff'); 39 | background-color: #58F09C; 40 | } 41 | .btns:active { 42 | position:relative; 43 | top:1px; 44 | } 45 | 46 | header,article,footer{min-width:260px; width:60%; margin:0px auto; font-family:Georgia; color:#2d2d2d;} 47 | 48 | header{ 49 | background: -webkit-linear-gradient(top, rgba(64,150,238,1) 0%,#79bbff 44%,#4197ee 100%); 50 | height:30px; 51 | line-height:30px; 52 | text-indent:1em; 53 | font-size:14px; 54 | font-weight: bold; 55 | color: #1E4770; 56 | } 57 | header span{font-size:12px;} 58 | header label{float:right; margin-right:16px;} 59 | article{line-height:26px; font-size: 14px; color: #3d3d3d;} 60 | footer{font-style:italic; text-align:center; font-size:14px; background-color:#adadad; height:36px; line-height:36px;} 61 | 62 | article ul{padding:6px;} 63 | article div{padding:6px;} 64 | article input{margin-right:5px;} 65 | article label{cursor:pointer;} 66 | article input[type=button]{min-width:60px; width:auto; height:auto; font-size:14px; padding:6px 10px;} 67 | 68 | .buttons{padding:6px;} 69 | 70 | .disabled{color: #9d9d9d;} 71 | 72 | .url-lists{font-size:14px; line-height:150%; width:100%; overflow:hidden;} 73 | .url-lists dt{padding:8px; background:#CADEF4; font-weight:bold;border-bottom:#adadad 1px solid;} 74 | .url-lists dd{padding:0px 0px 30px 0px;} 75 | .url-lists ul{list-style-type:decimal;list-style-position:inside;} 76 | .url-lists li{padding:10px; background:#efefef; border-bottom:#adadad 1px solid;} 77 | .url-lists li:nth-child(odd){background:#dfdfdf;} 78 | .url-lists a{color:#6d6d6d;} 79 | .arrow-right { 80 | width: 0; 81 | height: 0; 82 | border-top: 5px solid transparent; 83 | border-bottom: 5px solid transparent; 84 | _border-top: 5px solid white; 85 | _border-bottom: 5px solid white; 86 | border-left: 5px solid rgb(150, 150, 168); 87 | overflow:hidden; 88 | } 89 | .arrow-left { 90 | width: 0; 91 | height: 0; 92 | border-top: 5px solid transparent; 93 | border-bottom: 5px solid transparent; 94 | _border-top: 5px solid white; 95 | _border-bottom: 5px solid white; 96 | border-right:5px solid rgb(150, 150, 168); 97 | overflow:hidden; 98 | } 99 | 100 | .labelfloat { 101 | float:left; 102 | margin-top:5px; 103 | } 104 | .setnumber { 105 | height:20px; 106 | } 107 | .setnumber dt { 108 | float: left; 109 | /* width: 20px; */ 110 | height: 20px; 111 | padding-top: 5px; 112 | margin-left: 12px; 113 | } 114 | .setnumber dt div{ 115 | padding:initial; 116 | } -------------------------------------------------------------------------------- /two.js/two.js.api/Two.js_files/css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Ubuntu Mono'; 4 | font-style: italic; 5 | font-weight: 400; 6 | src: local('Ubuntu Mono Italic'), local('UbuntuMono-Italic'), url(https://fonts.gstatic.com/s/ubuntumono/v7/KAKuHXAHZOeECOWAHsRKAxNcqx07xvyppV96iFRdwiM.woff2) format('woff2'); 7 | unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Ubuntu Mono'; 12 | font-style: italic; 13 | font-weight: 400; 14 | src: local('Ubuntu Mono Italic'), local('UbuntuMono-Italic'), url(https://fonts.gstatic.com/s/ubuntumono/v7/KAKuHXAHZOeECOWAHsRKA-fhZE2STYI3KzBGzrJG_ik.woff2) format('woff2'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* greek-ext */ 18 | @font-face { 19 | font-family: 'Ubuntu Mono'; 20 | font-style: italic; 21 | font-weight: 400; 22 | src: local('Ubuntu Mono Italic'), local('UbuntuMono-Italic'), url(https://fonts.gstatic.com/s/ubuntumono/v7/KAKuHXAHZOeECOWAHsRKA26cj8HaeL2jS4NIBPr3RFo.woff2) format('woff2'); 23 | unicode-range: U+1F00-1FFF; 24 | } 25 | /* greek */ 26 | @font-face { 27 | font-family: 'Ubuntu Mono'; 28 | font-style: italic; 29 | font-weight: 400; 30 | src: local('Ubuntu Mono Italic'), local('UbuntuMono-Italic'), url(https://fonts.gstatic.com/s/ubuntumono/v7/KAKuHXAHZOeECOWAHsRKA9cKKn5Xt5n-nnvkqIBMZms.woff2) format('woff2'); 31 | unicode-range: U+0370-03FF; 32 | } 33 | /* latin-ext */ 34 | @font-face { 35 | font-family: 'Ubuntu Mono'; 36 | font-style: italic; 37 | font-weight: 400; 38 | src: local('Ubuntu Mono Italic'), local('UbuntuMono-Italic'), url(https://fonts.gstatic.com/s/ubuntumono/v7/KAKuHXAHZOeECOWAHsRKA0_0lycXMw8PhobHtu2Qgco.woff2) format('woff2'); 39 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; 40 | } 41 | /* latin */ 42 | @font-face { 43 | font-family: 'Ubuntu Mono'; 44 | font-style: italic; 45 | font-weight: 400; 46 | src: local('Ubuntu Mono Italic'), local('UbuntuMono-Italic'), url(https://fonts.gstatic.com/s/ubuntumono/v7/KAKuHXAHZOeECOWAHsRKA8u2Q0OS-KeTAWjgkS85mDg.woff2) format('woff2'); 47 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; 48 | } 49 | /* cyrillic-ext */ 50 | @font-face { 51 | font-family: 'Ubuntu Mono'; 52 | font-style: normal; 53 | font-weight: 400; 54 | src: local('Ubuntu Mono'), local('UbuntuMono-Regular'), url(https://fonts.gstatic.com/s/ubuntumono/v7/ViZhet7Ak-LRXZMXzuAfkTTOQ_MqJVwkKsUn0wKzc2I.woff2) format('woff2'); 55 | unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; 56 | } 57 | /* cyrillic */ 58 | @font-face { 59 | font-family: 'Ubuntu Mono'; 60 | font-style: normal; 61 | font-weight: 400; 62 | src: local('Ubuntu Mono'), local('UbuntuMono-Regular'), url(https://fonts.gstatic.com/s/ubuntumono/v7/ViZhet7Ak-LRXZMXzuAfkTUj_cnvWIuuBMVgbX098Mw.woff2) format('woff2'); 63 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 64 | } 65 | /* greek-ext */ 66 | @font-face { 67 | font-family: 'Ubuntu Mono'; 68 | font-style: normal; 69 | font-weight: 400; 70 | src: local('Ubuntu Mono'), local('UbuntuMono-Regular'), url(https://fonts.gstatic.com/s/ubuntumono/v7/ViZhet7Ak-LRXZMXzuAfkUbcKLIaa1LC45dFaAfauRA.woff2) format('woff2'); 71 | unicode-range: U+1F00-1FFF; 72 | } 73 | /* greek */ 74 | @font-face { 75 | font-family: 'Ubuntu Mono'; 76 | font-style: normal; 77 | font-weight: 400; 78 | src: local('Ubuntu Mono'), local('UbuntuMono-Regular'), url(https://fonts.gstatic.com/s/ubuntumono/v7/ViZhet7Ak-LRXZMXzuAfkWo_sUJ8uO4YLWRInS22T3Y.woff2) format('woff2'); 79 | unicode-range: U+0370-03FF; 80 | } 81 | /* latin-ext */ 82 | @font-face { 83 | font-family: 'Ubuntu Mono'; 84 | font-style: normal; 85 | font-weight: 400; 86 | src: local('Ubuntu Mono'), local('UbuntuMono-Regular'), url(https://fonts.gstatic.com/s/ubuntumono/v7/ViZhet7Ak-LRXZMXzuAfkSYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2'); 87 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; 88 | } 89 | /* latin */ 90 | @font-face { 91 | font-family: 'Ubuntu Mono'; 92 | font-style: normal; 93 | font-weight: 400; 94 | src: local('Ubuntu Mono'), local('UbuntuMono-Regular'), url(https://fonts.gstatic.com/s/ubuntumono/v7/ViZhet7Ak-LRXZMXzuAfkY4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); 95 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; 96 | } 97 | -------------------------------------------------------------------------------- /devTool/firstRun.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | (function() 21 | { 22 | function onDOMLoaded() 23 | { 24 | // Set up logo image 25 | var logo = E("logo"); 26 | logo.src = "skin/abp-128.png"; 27 | var errorCallback = function() 28 | { 29 | logo.removeEventListener("error", errorCallback, false); 30 | // We are probably in Chrome/Opera/Safari, the image has a different path. 31 | logo.src = "icons/detailed/abp-128.png"; 32 | }; 33 | logo.addEventListener("error", errorCallback, false); 34 | 35 | // Set up URLs 36 | getDocLink("donate", function(link) 37 | { 38 | E("donate").href = link; 39 | }); 40 | 41 | getDocLink("contributors", function(link) 42 | { 43 | E("contributors").href = link; 44 | }); 45 | 46 | getDocLink("acceptable_ads_criteria", function(link) 47 | { 48 | setLinks("acceptable-ads-explanation", link, openFilters); 49 | }); 50 | 51 | getDocLink("contribute", function(link) 52 | { 53 | setLinks("share-headline", link); 54 | }); 55 | 56 | ext.backgroundPage.sendMessage({ 57 | type: "app.get", 58 | what: "issues" 59 | }, function(issues) 60 | { 61 | // Show warning if filterlists settings were reinitialized 62 | if (issues.filterlistsReinitialized) 63 | { 64 | E("filterlistsReinitializedWarning").removeAttribute("hidden"); 65 | setLinks("filterlistsReinitializedWarning", openFilters); 66 | } 67 | }); 68 | 69 | updateSocialLinks(); 70 | 71 | ext.onMessage.addListener(function(message) 72 | { 73 | if (message.type == "subscriptions.respond") 74 | { 75 | updateSocialLinks(); 76 | } 77 | }); 78 | ext.backgroundPage.sendMessage({ 79 | type: "subscriptions.listen", 80 | filter: ["added", "removed", "updated", "disabled"] 81 | }); 82 | } 83 | 84 | function updateSocialLinks() 85 | { 86 | var networks = ["twitter", "facebook", "gplus"]; 87 | networks.forEach(function(network) 88 | { 89 | var link = E("share-" + network); 90 | checkShareResource(link.getAttribute("data-script"), function(isBlocked) 91 | { 92 | // Don't open the share page if the sharing script would be blocked 93 | if (isBlocked) 94 | link.removeEventListener("click", onSocialLinkClick, false); 95 | else 96 | link.addEventListener("click", onSocialLinkClick, false); 97 | }); 98 | }); 99 | } 100 | 101 | function onSocialLinkClick(event) 102 | { 103 | if (window.matchMedia("(max-width: 970px)").matches) 104 | return; 105 | 106 | event.preventDefault(); 107 | 108 | getDocLink(event.target.id, function(link) 109 | { 110 | openSharePopup(link); 111 | }); 112 | } 113 | 114 | function setLinks(id) 115 | { 116 | var element = E(id); 117 | if (!element) 118 | { 119 | return; 120 | } 121 | 122 | var links = element.getElementsByTagName("a"); 123 | 124 | for (var i = 0; i < links.length; i++) 125 | { 126 | if (typeof arguments[i + 1] == "string") 127 | { 128 | links[i].href = arguments[i + 1]; 129 | links[i].setAttribute("target", "_blank"); 130 | } 131 | else if (typeof arguments[i + 1] == "function") 132 | { 133 | links[i].href = "javascript:void(0);"; 134 | links[i].addEventListener("click", arguments[i + 1], false); 135 | } 136 | } 137 | } 138 | 139 | function openFilters() 140 | { 141 | ext.backgroundPage.sendMessage({type: "app.open", what: "options"}); 142 | } 143 | 144 | document.addEventListener("DOMContentLoaded", onDOMLoaded, false); 145 | })(); 146 | -------------------------------------------------------------------------------- /devTool/i18n.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | // This variable should no longer be necessary once options.js in Chrome 19 | // accesses ext.i18n directly. 20 | var i18n = ext.i18n; 21 | 22 | // Getting UI locale cannot be done synchronously on Firefox, 23 | // requires messaging the background page. For Chrome and Safari, 24 | // we could get the UI locale here, but would need to duplicate 25 | // the logic implemented in Utils.appLocale. 26 | ext.backgroundPage.sendMessage( 27 | { 28 | type: "app.get", 29 | what: "localeInfo" 30 | }, 31 | function(localeInfo) 32 | { 33 | document.documentElement.lang = localeInfo.locale; 34 | document.documentElement.dir = localeInfo.bidiDir; 35 | } 36 | ); 37 | 38 | // Inserts i18n strings into matching elements. Any inner HTML already in the element is 39 | // parsed as JSON and used as parameters to substitute into placeholders in the i18n 40 | // message. 41 | ext.i18n.setElementText = function(element, stringName, arguments) 42 | { 43 | function processString(str, element) 44 | { 45 | var match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(str); 46 | if (match) 47 | { 48 | processString(match[1], element); 49 | 50 | var e = document.createElement(match[2]); 51 | processString(match[3], e); 52 | element.appendChild(e); 53 | 54 | processString(match[4], element); 55 | } 56 | else 57 | element.appendChild(document.createTextNode(str)); 58 | } 59 | 60 | while (element.lastChild) 61 | element.removeChild(element.lastChild); 62 | processString(ext.i18n.getMessage(stringName, arguments), element); 63 | } 64 | 65 | // Loads i18n strings 66 | function loadI18nStrings() 67 | { 68 | function addI18nStringsToElements(containerElement) 69 | { 70 | var elements = containerElement.querySelectorAll("[class^='i18n_']"); 71 | for(var i = 0; i < elements.length; i++) 72 | { 73 | var node = elements[i]; 74 | var arguments = JSON.parse("[" + node.textContent + "]"); 75 | if (arguments.length == 0) 76 | arguments = null; 77 | 78 | var className = node.className; 79 | if (className instanceof SVGAnimatedString) 80 | className = className.animVal; 81 | var stringName = className.split(/\s/)[0].substring(5); 82 | 83 | ext.i18n.setElementText(node, stringName, arguments); 84 | } 85 | } 86 | addI18nStringsToElements(document); 87 | // Content of Template is not rendered on runtime so we need to add 88 | // translation strings for each Template documentFragment content individually 89 | var templates = document.querySelectorAll("template"); 90 | for (var i = 0; i < templates.length; i++) 91 | addI18nStringsToElements(templates[i].content); 92 | } 93 | 94 | // Provides a more readable string of the current date and time 95 | function i18n_timeDateStrings(when) 96 | { 97 | var d = new Date(when); 98 | var timeString = d.toLocaleTimeString(); 99 | 100 | var now = new Date(); 101 | if (d.toDateString() == now.toDateString()) 102 | return [timeString]; 103 | else 104 | return [timeString, d.toLocaleDateString()]; 105 | } 106 | 107 | // Formats date string to ["YYYY-MM-DD", "mm:ss"] format 108 | function i18n_formatDateTime(when) 109 | { 110 | var date = new Date(when); 111 | var dateParts = [date.getFullYear(), date.getMonth() + 1, date.getDate(), 112 | date.getHours(), date.getMinutes()]; 113 | 114 | var dateParts = dateParts.map(function(datePart) 115 | { 116 | return datePart < 10 ? "0" + datePart : datePart; 117 | }); 118 | 119 | return [dateParts.splice(0, 3).join("-"), dateParts.join(":")]; 120 | } 121 | 122 | // Fill in the strings as soon as possible 123 | window.addEventListener("DOMContentLoaded", loadI18nStrings, true); 124 | -------------------------------------------------------------------------------- /devTool/stats.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | { 21 | const {require} = ext.backgroundPage.getWindow(); 22 | 23 | const {getBlockedPerPage} = require("stats"); 24 | const {FilterNotifier} = require("filterNotifier"); 25 | const {Prefs} = require("prefs"); 26 | 27 | let currentPage; 28 | const shareURL = "https://adblockplus.org/"; 29 | 30 | let messageMark = {}; 31 | let shareLinks = { 32 | facebook: ["https://www.facebook.com/dialog/feed", { 33 | app_id: "475542399197328", 34 | link: shareURL, 35 | redirect_uri: "https://www.facebook.com/", 36 | ref: "adcounter", 37 | name: messageMark, 38 | actions: JSON.stringify([ 39 | { 40 | name: i18n.getMessage("stats_share_download"), 41 | link: shareURL 42 | } 43 | ]) 44 | }], 45 | gplus: ["https://plus.google.com/share", { 46 | url: shareURL 47 | }], 48 | twitter: ["https://twitter.com/intent/tweet", { 49 | text: messageMark, 50 | url: shareURL, 51 | via: "AdblockPlus" 52 | }] 53 | }; 54 | 55 | function createShareLink(network, blockedCount) 56 | { 57 | let url = shareLinks[network][0]; 58 | let params = shareLinks[network][1]; 59 | 60 | let querystring = []; 61 | for (let key in params) 62 | { 63 | let value = params[key]; 64 | if (value == messageMark) 65 | value = i18n.getMessage("stats_share_message", blockedCount); 66 | querystring.push(encodeURIComponent(key) + "=" + encodeURIComponent(value)); 67 | } 68 | return url + "?" + querystring.join("&"); 69 | } 70 | 71 | function onLoad() 72 | { 73 | document.getElementById("share-box").addEventListener("click", share, false); 74 | let showIconNumber = document.getElementById("show-iconnumber"); 75 | showIconNumber.setAttribute("aria-checked", Prefs.show_statsinicon); 76 | showIconNumber.addEventListener("click", toggleIconNumber, false); 77 | document.querySelector("label[for='show-iconnumber']").addEventListener("click", toggleIconNumber, false); 78 | 79 | // Update stats 80 | ext.pages.query({active: true, lastFocusedWindow: true}, pages => 81 | { 82 | currentPage = pages[0]; 83 | updateStats(); 84 | 85 | FilterNotifier.on("filter.hitCount", updateStats); 86 | 87 | document.getElementById("stats-container").removeAttribute("hidden"); 88 | }); 89 | } 90 | 91 | function onUnload() 92 | { 93 | FilterNotifier.off("filter.hitCount", updateStats); 94 | } 95 | 96 | function updateStats() 97 | { 98 | let statsPage = document.getElementById("stats-page"); 99 | let blockedPage = getBlockedPerPage(currentPage).toLocaleString(); 100 | i18n.setElementText(statsPage, "stats_label_page", [blockedPage]); 101 | 102 | let statsTotal = document.getElementById("stats-total"); 103 | let blockedTotal = Prefs.blocked_total.toLocaleString(); 104 | i18n.setElementText(statsTotal, "stats_label_total", [blockedTotal]); 105 | } 106 | 107 | function share(ev) 108 | { 109 | // Easter Egg 110 | let blocked = Prefs.blocked_total; 111 | if (blocked <= 9000 || blocked >= 10000) 112 | blocked = blocked.toLocaleString(); 113 | else 114 | blocked = i18n.getMessage("stats_over", (9000).toLocaleString()); 115 | 116 | ext.pages.open(createShareLink(ev.target.dataset.social, blocked)); 117 | } 118 | 119 | function toggleIconNumber() 120 | { 121 | Prefs.show_statsinicon = !Prefs.show_statsinicon; 122 | document.getElementById("show-iconnumber").setAttribute("aria-checked", Prefs.show_statsinicon); 123 | } 124 | 125 | document.addEventListener("DOMContentLoaded", onLoad, false); 126 | window.addEventListener("unload", onUnload, false); 127 | } 128 | -------------------------------------------------------------------------------- /devTool/_locales/ml/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "message": "ചേര്‍ക്കുക" 4 | }, 5 | "add_domain_button": { 6 | "message": "ഡൊമൈൻ ചേര്‍ക്കുക" 7 | }, 8 | "add_filter_button": { 9 | "message": "ഫിൽറ്റർ ചേര്‍ക്കുക" 10 | }, 11 | "add_filters_msg": { 12 | "message": "ഫിൽറ്റർ / ഫിൽറ്ററുകൾ ഉള്പെടുത്തുക?" 13 | }, 14 | "add_your_own_filters": { 15 | "message": "സ്വന്തം ഫിൽറ്റർ ചേര്‍ക്കുക" 16 | }, 17 | "apply_changes": { 18 | "message": "മാറ്റങ്ങള്‍ നടപ്പിലാക്കുക" 19 | }, 20 | "block_element": { 21 | "message": "എലമെന്റ് തടയുക" 22 | }, 23 | "cancel": { 24 | "message": "റദ്ദാക്കുക" 25 | }, 26 | "clickhide_instructions": { 27 | "message": "ഈ പോപ്പപ്പ് ക്ലോസ് ചെയ്ത ശേഷം താളിലെ എലമെന്റില്‍ ക്ലിക്കോ റൈറ്റ് ക്ലിക്കോ ചെയ്യുക." 28 | }, 29 | "description": { 30 | "message": "പത്തു കോടിയിലേറെ ഉപകരണങ്ങളില്‍ ഉപയോഗിക്കപ്പെടുന്ന ആഡ്ബ്ലോക്ക് പ്ലസ് ആണ് ലോകത്തെ ഏറ്റവും പ്രചാരമേറിയ ആഡ്ബ്ലോക്കര്‍." 31 | }, 32 | "disabled_for_site": { 33 | "message": "ഈ സൈറ്റില്‍ ഡിസേബിള്‍ ചെയ്തിരിക്കുന്നു" 34 | }, 35 | "easy_create_filter": { 36 | "message": "എലമെന്റ് തടയുക" 37 | }, 38 | "edit_filters_raw": { 39 | "message": "അരിപ്പകള്‍ റോ ടെക്സ്റ്റ് (ഫോര്‍മാറ്റിങ് ഇല്ലാതെ) ആയി തിരുത്തുക" 40 | }, 41 | "enabled_for_site": { 42 | "message": "ഈ സൈറ്റില്‍ സജീവം" 43 | }, 44 | "filter_lists": { 45 | "message": "പട്ടികകള്‍ അരിക്കുക" 46 | }, 47 | "general": { 48 | "message": "പലവക" 49 | }, 50 | "invalid_css_selector": { 51 | "message": "$selector$ ഒരു ശരിയായ സി. എസ്. എസ്. സെലക്റ്റര്‍ അല്ല", 52 | "placeholders": { 53 | "selector": { 54 | "content": "$1" 55 | } 56 | } 57 | }, 58 | "last_updated_at": { 59 | "message": "അവസാനം പുതുക്കിയത് $date$, $time$", 60 | "placeholders": { 61 | "date": { 62 | "content": "$2" 63 | }, 64 | "time": { 65 | "content": "$1" 66 | } 67 | } 68 | }, 69 | "last_updated_at_today": { 70 | "message": "അവസാനം പുതുക്കിയത് ഇന്ന് $time$", 71 | "placeholders": { 72 | "time": { 73 | "content": "$1" 74 | } 75 | } 76 | }, 77 | "line": { 78 | "message": "വരി $number$", 79 | "placeholders": { 80 | "number": { 81 | "content": "$1" 82 | } 83 | } 84 | }, 85 | "name": { 86 | "message": "Adblock Plus" 87 | }, 88 | "name_devbuild": { 89 | "message": "ആഡ്ബ്ലോക്ക് പ്ലസ് ഡെവലപ്മെന്റ് ബില്‍ഡ്" 90 | }, 91 | "notification_configure": { 92 | "message": "നോട്ടിഫിക്കേഷന്‍ ക്രമീകരണങ്ങള്‍ ചിട്ടപ്പെടുത്തുക" 93 | }, 94 | "notification_open_all": { 95 | "message": "ഈ അറിയിപ്പില്‍നിന്നുള്ള എല്ലാ കണ്ണികളും തുറക്കുക" 96 | }, 97 | "options": { 98 | "message": "ആഡ്ബ്ലോക്ക് പ്ലസ് ഓപ്ഷനുകള്‍" 99 | }, 100 | "options_short": { 101 | "message": "സൗകര്യങ്ങള്‍" 102 | }, 103 | "out_of_date_lists": { 104 | "message": "പഴകിയ പട്ടികകള്‍ പതിവായി പുതുക്കുന്നു." 105 | }, 106 | "remove_button": { 107 | "message": "തെരഞ്ഞെടുത്തത് നീക്കംചെയ്യുക" 108 | }, 109 | "stats_label_page": { 110 | "message": "ഈ താളില്‍ $number$", 111 | "placeholders": { 112 | "number": { 113 | "content": "$1" 114 | } 115 | } 116 | }, 117 | "stats_label_total": { 118 | "message": "മൊത്തം $number$", 119 | "placeholders": { 120 | "number": { 121 | "content": "$1" 122 | } 123 | } 124 | }, 125 | "stats_over": { 126 | "message": "$number$-നു മേല്‍", 127 | "placeholders": { 128 | "number": { 129 | "content": "$1" 130 | } 131 | } 132 | }, 133 | "stats_share_download": { 134 | "message": "ആഡ്ബ്ലോക്ക് പ്ലസ് ഡൗണ്‍ലോഡ് ചെയ്യുക" 135 | }, 136 | "stats_share_message": { 137 | "message": "ആഡ്ബ്ലോക്ക് പ്ലസ്സിന് നന്ദി, ഞാന്‍ $number$ പരസ്യങ്ങളും ട്രാക്കറുകളും തടഞ്ഞു.", 138 | "placeholders": { 139 | "number": { 140 | "content": "$1" 141 | } 142 | } 143 | }, 144 | "stats_share_title": { 145 | "message": "ഈ സംഖ്യ പങ്കുവയ്ക്കുക" 146 | }, 147 | "stats_show_iconnumber": { 148 | "message": "ഐക്കണില്‍ സംഖ്യ കാണിക്കുക" 149 | }, 150 | "stats_title": { 151 | "message": "തടഞ്ഞ പരസ്യങ്ങള്‍" 152 | }, 153 | "unexpected_filter_list_header": { 154 | "message": "ഫില്‍റ്റര്‍ ലിസ്റ്റ് ഹെഡ്ഡറുകള്‍ ഇവിടെ അനുവദനീയമല്ല" 155 | }, 156 | "update_now": { 157 | "message": "ഇപ്പോള്‍ത്തന്നെ പുതുക്കുക" 158 | }, 159 | "whitelisted_domains": { 160 | "message": "നല്ലപട്ടികയില്‍പ്പെട്ട ഡൊമെയ്നുകള്‍" 161 | } 162 | } 163 | -------------------------------------------------------------------------------- /ElementBlurTool/popup/styles/options.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | /* CSS Document */ 3 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;} 4 | body{font-family:tahoma,"宋体",Simsun, Microsoft YaHei, Arial Unicode MS, Mingliu, Arial, Helvetica;} 5 | table{border-collapse:collapse;border-spacing:0;} 6 | fieldset,img{border:0;} 7 | address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;} 8 | ol,ul{list-style:none;} 9 | caption,th{text-align:left;} 10 | h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} 11 | q:before,q:after{content:"";} 12 | .hide{display: none;} 13 | .btns { 14 | -moz-box-shadow:inset 0px 1px 0px 0px #cae3fc; 15 | -webkit-box-shadow:inset 0px 1px 0px 0px #cae3fc; 16 | box-shadow: inset 0px 1px 0px 0px #8DD8A5; 17 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #59F19C), color-stop(1, #53C07C) ); 18 | background:-moz-linear-gradient( center top, #79bbff 5%, #4197ee 100% ); 19 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#79bbff', endColorstr='#4197ee'); 20 | background-color: #59F19C; 21 | -moz-border-radius:4px; 22 | -webkit-border-radius:4px; 23 | border-radius:4px; 24 | border: 1px solid #54C881; 25 | display:inline-block; 26 | color:#ffffff; 27 | font-family:arial; 28 | font-size:14px; 29 | font-weight:bold; 30 | padding:7px 22px; 31 | text-decoration:none; 32 | text-shadow: 1px 1px 0px #56DC8F; 33 | cursor: pointer; 34 | } 35 | .btns:hover { 36 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1FB862), color-stop(1, #5AF59E) ); 37 | background:-moz-linear-gradient( center top, #4197ee 5%, #79bbff 100% ); 38 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4197ee', endColorstr='#79bbff'); 39 | background-color: #58F09C; 40 | } 41 | .btns:active { 42 | position:relative; 43 | top:1px; 44 | } 45 | 46 | header,article,footer{min-width:260px; width:60%; margin:0px auto; font-family:Georgia; color:#2d2d2d;} 47 | 48 | header{ 49 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(122,188,255,1)), color-stop(44%,rgba(96,171,248,1)), color-stop(100%,rgba(64,150,238,1))); /* Chrome,Safari4+ */ 50 | background: -webkit-linear-gradient(top, rgba(102, 242, 148, 1) 0%,rgba(89, 246, 160, 1) 44%,rgba(82, 179, 115, 1) 100%); /* Chrome10+,Safari5.1+ */ 51 | height:30px; 52 | line-height:30px; 53 | text-indent:1em; 54 | font-size:14px; 55 | font-weight: bold; 56 | color: #1E4770; 57 | } 58 | header span{font-size:12px;} 59 | header label{float:right; margin-right:16px;} 60 | article{line-height:26px; font-size: 14px; color: #3d3d3d;} 61 | footer{font-style:italic; text-align:center; font-size:14px; background-color:#adadad; height:36px; line-height:36px;} 62 | 63 | article ul{padding:6px;} 64 | article div{padding:6px;} 65 | article input{margin-right:5px;} 66 | article label{cursor:pointer;} 67 | article input[type=button]{min-width:60px; width:auto; height:auto; font-size:14px; padding:6px 10px;} 68 | 69 | .buttons{padding:6px;} 70 | 71 | .disabled{color: #9d9d9d;} 72 | 73 | .url-lists{font-size:14px; line-height:150%; width:100%; overflow:hidden;} 74 | .url-lists dt{padding:8px; background:#CADEF4; font-weight:bold;border-bottom:#adadad 1px solid;} 75 | .url-lists dd{padding:0px 0px 30px 0px;} 76 | .url-lists ul{list-style-type:decimal;list-style-position:inside;} 77 | .url-lists li{padding:10px; background:#efefef; border-bottom:#adadad 1px solid;} 78 | .url-lists li:nth-child(odd){background:#dfdfdf;} 79 | .url-lists a{color:#6d6d6d;} 80 | .arrow-right { 81 | width: 0; 82 | height: 0; 83 | border-top: 5px solid transparent; 84 | border-bottom: 5px solid transparent; 85 | _border-top: 5px solid white; 86 | _border-bottom: 5px solid white; 87 | border-left: 5px solid rgb(150, 150, 168); 88 | overflow:hidden; 89 | } 90 | .arrow-left { 91 | width: 0; 92 | height: 0; 93 | border-top: 5px solid transparent; 94 | border-bottom: 5px solid transparent; 95 | _border-top: 5px solid white; 96 | _border-bottom: 5px solid white; 97 | border-right:5px solid rgb(150, 150, 168); 98 | overflow:hidden; 99 | } 100 | 101 | .labelfloat { 102 | float:left; 103 | margin-top:5px; 104 | } 105 | .setnumber { 106 | height:20px; 107 | } 108 | .setnumber dt { 109 | float: left; 110 | /* width: 20px; */ 111 | height: 20px; 112 | padding-top: 5px; 113 | margin-left: 12px; 114 | } 115 | .setnumber dt div{ 116 | padding:initial; 117 | } -------------------------------------------------------------------------------- /URLMaster/popup/styles/options.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | /* CSS Document */ 3 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;} 4 | body{font-family:tahoma,"宋体",Simsun, Microsoft YaHei, Arial Unicode MS, Mingliu, Arial, Helvetica;} 5 | table{border-collapse:collapse;border-spacing:0;} 6 | fieldset,img{border:0;} 7 | address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;} 8 | ol,ul{list-style:none;} 9 | caption,th{text-align:left;} 10 | h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} 11 | q:before,q:after{content:"";} 12 | .hide{display: none;} 13 | .btns { 14 | -moz-box-shadow:inset 0px 1px 0px 0px #cae3fc; 15 | -webkit-box-shadow:inset 0px 1px 0px 0px #cae3fc; 16 | box-shadow: inset 0px 1px 0px 0px #8DD8A5; 17 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #59F19C), color-stop(1, #53C07C) ); 18 | background:-moz-linear-gradient( center top, #79bbff 5%, #4197ee 100% ); 19 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#79bbff', endColorstr='#4197ee'); 20 | background-color: #59F19C; 21 | -moz-border-radius:4px; 22 | -webkit-border-radius:4px; 23 | border-radius:4px; 24 | border: 1px solid #54C881; 25 | display:inline-block; 26 | color:#ffffff; 27 | font-family:arial; 28 | font-size:14px; 29 | font-weight:bold; 30 | padding:7px 22px; 31 | text-decoration:none; 32 | text-shadow: 1px 1px 0px #56DC8F; 33 | cursor: pointer; 34 | } 35 | .btns:hover { 36 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1FB862), color-stop(1, #5AF59E) ); 37 | background:-moz-linear-gradient( center top, #4197ee 5%, #79bbff 100% ); 38 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4197ee', endColorstr='#79bbff'); 39 | background-color: #58F09C; 40 | } 41 | .btns:active { 42 | position:relative; 43 | top:1px; 44 | } 45 | 46 | header,article,footer{min-width:260px; width:60%; margin:0px auto; font-family:Georgia; color:#2d2d2d;} 47 | 48 | header{ 49 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(122,188,255,1)), color-stop(44%,rgba(96,171,248,1)), color-stop(100%,rgba(64,150,238,1))); /* Chrome,Safari4+ */ 50 | background: -webkit-linear-gradient(top, rgba(102, 242, 148, 1) 0%,rgba(89, 246, 160, 1) 44%,rgba(82, 179, 115, 1) 100%); /* Chrome10+,Safari5.1+ */ 51 | height:30px; 52 | line-height:30px; 53 | text-indent:1em; 54 | font-size:14px; 55 | font-weight: bold; 56 | color: #1E4770; 57 | } 58 | header span{font-size:12px;} 59 | header label{float:right; margin-right:16px;} 60 | article{line-height:26px; font-size: 14px; color: #3d3d3d;} 61 | footer{font-style:italic; text-align:center; font-size:14px; background-color:#adadad; height:36px; line-height:36px;} 62 | 63 | article ul{padding:6px;} 64 | article div{padding:6px;} 65 | article input{margin-right:5px;} 66 | article label{cursor:pointer;} 67 | article input[type=button]{min-width:60px; width:auto; height:auto; font-size:14px; padding:6px 10px;} 68 | 69 | .buttons{padding:6px;} 70 | 71 | .disabled{color: #9d9d9d;} 72 | 73 | .url-lists{font-size:14px; line-height:150%; width:100%; overflow:hidden;} 74 | .url-lists dt{padding:8px; background:#CADEF4; font-weight:bold;border-bottom:#adadad 1px solid;} 75 | .url-lists dd{padding:0px 0px 30px 0px;} 76 | .url-lists ul{list-style-type:decimal;list-style-position:inside;} 77 | .url-lists li{padding:10px; background:#efefef; border-bottom:#adadad 1px solid;} 78 | .url-lists li:nth-child(odd){background:#dfdfdf;} 79 | .url-lists a{color:#6d6d6d;} 80 | .arrow-right { 81 | width: 0; 82 | height: 0; 83 | border-top: 5px solid transparent; 84 | border-bottom: 5px solid transparent; 85 | _border-top: 5px solid white; 86 | _border-bottom: 5px solid white; 87 | border-left: 5px solid rgb(150, 150, 168); 88 | overflow:hidden; 89 | } 90 | .arrow-left { 91 | width: 0; 92 | height: 0; 93 | border-top: 5px solid transparent; 94 | border-bottom: 5px solid transparent; 95 | _border-top: 5px solid white; 96 | _border-bottom: 5px solid white; 97 | border-right:5px solid rgb(150, 150, 168); 98 | overflow:hidden; 99 | } 100 | 101 | .labelfloat { 102 | float:left; 103 | margin-top:5px; 104 | } 105 | .setnumber { 106 | height:20px; 107 | } 108 | .setnumber dt { 109 | float: left; 110 | /* width: 20px; */ 111 | height: 20px; 112 | padding-top: 5px; 113 | margin-left: 12px; 114 | } 115 | .setnumber dt div{ 116 | padding:initial; 117 | } 118 | 119 | .instructhide{ 120 | display:none; 121 | } 122 | .instructext{ 123 | } -------------------------------------------------------------------------------- /chartroom/site/public/scripts/game.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by mimig on 2017/7/23. 3 | */ 4 | $(function () { 5 | var hichat = new HiChat(); 6 | hichat.init(); 7 | }); 8 | var HiChat = function() { 9 | this.socket = null; 10 | }; 11 | HiChat.prototype = { 12 | init: function() { 13 | var that = this; 14 | this.socket = io.connect(); 15 | this.socket.on('connect', function () { 16 | console.log("connect success!"); 17 | console.log(that.socket.id) 18 | }); 19 | this.socket.on('newMsg', function (msg) { 20 | that._disPlayUserMsg('网友',msg.msg); 21 | }); 22 | this.socket.on('system', function (info) { 23 | console.log('receive:', info); 24 | switch (info.status) 25 | { 26 | case '1': 27 | that._disabledMove(); 28 | break; 29 | case '2': 30 | that._enabledMove(); 31 | break; 32 | default: 33 | break; 34 | } 35 | that._disPlaySysNewMsg('系统',info.msg); 36 | 37 | }); 38 | this.socket.on('newMove', function (stats, msg) { 39 | console.log('receive:', msg); 40 | that._moveChess(that, msg); 41 | //that._enabledMove(); 42 | }); 43 | $(".black,.white").draggable({ 44 | revert: "invalid" 45 | }); 46 | $(".empty").droppable({ 47 | drop: that._dropFunc(that), 48 | }); 49 | $("#sendBtn").on('click', function () { 50 | var msg = $("#messageInput").val(); 51 | $("#messageInput").val(''); 52 | that._disPlayUserMsg('我',msg); 53 | that.socket.emit('postMsg',msg); 54 | }); 55 | $("body").keydown(function() { 56 | if (event.keyCode == "13") {//keyCode=13是回车键 57 | $('#sendBtn').click(); 58 | } 59 | }); 60 | }, 61 | _dropFunc:function(that) { 62 | var connection = that; 63 | //this.socket.emit('img', e.target.result, color); 64 | //or return {} 65 | return function (event, ui) { 66 | var color = ui.draggable.hasClass('black') ? 'black' : 'white'; 67 | var start = ui.helper.attr('No'); 68 | var stop = $(this).attr('No'); 69 | $('
    ').replaceAll($(ui.helper)); 70 | $('
    ').replaceAll($(this)); 71 | $("." + color).draggable({ 72 | revert: "invalid" 73 | }); 74 | $(".empty").droppable({ 75 | drop: connection._dropFunc(connection), 76 | }); 77 | msg = { 78 | start: start, 79 | stop: stop, 80 | color: color 81 | }; 82 | console.log('send:',msg); 83 | connection.socket.emit('postMove',msg, color); 84 | } 85 | }, 86 | _moveChess:function (connection,msg) { 87 | var start = msg.start, 88 | stop = msg.stop, 89 | color = msg.color; 90 | $('
    ').replaceAll($('.cell[No$='+start+']')); 91 | $('
    ').replaceAll($('.cell[No$='+stop+']')); 92 | $("." + color).draggable({ 93 | revert: "invalid" 94 | }); 95 | $(".empty").droppable({ 96 | drop: connection._dropFunc(connection), 97 | }); 98 | }, 99 | _disPlaySysNewMsg: function(user,msg) { 100 | var date = new Date().toTimeString().substr(0, 8); 101 | $('

    ').html(user + '(' + date + '): ' + msg) 102 | .appendTo($('#historyMsg')) 103 | $('#historyMsg').scrollTop($('#historyMsg')[0].scrollHeight); 104 | }, 105 | _disPlayUserMsg: function(user,msg) { 106 | var date = new Date().toTimeString().substr(0, 8); 107 | $('

    ').html(user + '(' + date + '): ' + msg) 108 | .appendTo($('#historyMsg')) 109 | $('#historyMsg').scrollTop($('#historyMsg')[0].scrollHeight); 110 | }, 111 | _disabledMove: function() { 112 | $('#cover').css({ 113 | 'width': $('#panel').width(), 114 | 'position': 'absolute', 115 | 'height': $('#panel').height(), 116 | 'opacity': 0.1, 117 | 'z-index': 100, 118 | 'top':$('#panel').offset().top, 119 | 'left':$('#panel').offset().left, 120 | 'display':'block' 121 | }); 122 | }, 123 | _enabledMove: function() { 124 | $('#cover').hide(); 125 | }, 126 | }; -------------------------------------------------------------------------------- /devTool/common.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | (function(global) 21 | { 22 | global.E = function E(id) 23 | { 24 | return document.getElementById(id); 25 | } 26 | 27 | global.getDocLink = function(link, callback) 28 | { 29 | ext.backgroundPage.sendMessage({ 30 | type: "app.get", 31 | what: "doclink", 32 | link: link 33 | }, callback); 34 | } 35 | 36 | global.checkShareResource = function(url, callback) 37 | { 38 | ext.backgroundPage.sendMessage( 39 | { 40 | type: "filters.blocked", 41 | url: url, 42 | requestType: "SCRIPT", 43 | docDomain: "adblockplus.org", 44 | thirdParty: true 45 | }, callback); 46 | } 47 | 48 | global.openSharePopup = function(url) 49 | { 50 | var glassPane = E("glass-pane"); 51 | if (!glassPane) 52 | { 53 | glassPane = document.createElement("div"); 54 | glassPane.setAttribute("id", "glass-pane"); 55 | document.body.appendChild(glassPane); 56 | } 57 | 58 | var iframe = E("share-popup"); 59 | if (!iframe) 60 | { 61 | iframe = document.createElement("iframe"); 62 | iframe.setAttribute("id", "share-popup"); 63 | iframe.setAttribute("scrolling", "no"); 64 | glassPane.appendChild(iframe); 65 | } 66 | 67 | // Firefox 38+ no longer allows messaging using postMessage so we need 68 | // to have a fake top level frame to avoid problems with scripts that try to 69 | // communicate with the first-run page 70 | var isGecko = ("Components" in window); 71 | if (isGecko) 72 | { 73 | try 74 | { 75 | var Ci = Components.interfaces; 76 | var docShell = iframe.contentWindow 77 | .QueryInterface(Ci.nsIInterfaceRequestor) 78 | .getInterface(Ci.nsIDocShell); 79 | 80 | if (typeof docShell.frameType != "undefined") 81 | { 82 | // Gecko 47+ 83 | docShell.frameType = docShell.FRAME_TYPE_BROWSER; 84 | } 85 | else 86 | { 87 | // Legacy branch 88 | docShell.setIsBrowserInsideApp(Ci.nsIScriptSecurityManager.UNKNOWN_APP_ID); 89 | } 90 | } 91 | catch(ex) 92 | { 93 | console.error(ex); 94 | } 95 | } 96 | 97 | var popupMessageReceived = false; 98 | function resizePopup(width, height) 99 | { 100 | iframe.width = width; 101 | iframe.height = height; 102 | iframe.style.marginTop = -height / 2 + "px"; 103 | iframe.style.marginLeft = -width / 2 + "px"; 104 | popupMessageReceived = true; 105 | window.removeEventListener("message", popupMessageListener); 106 | } 107 | 108 | var popupMessageListener = function(event) 109 | { 110 | if (!/[.\/]adblockplus\.org$/.test(event.origin) 111 | || !("width" in event.data) 112 | || !("height" in event.data)) 113 | return; 114 | 115 | resizePopup(event.data.width, event.data.height); 116 | }; 117 | // Firefox requires last parameter to be true to be triggered by 118 | // unprivileged pages 119 | window.addEventListener("message", popupMessageListener, false, true); 120 | 121 | var popupLoadListener = function() 122 | { 123 | if (!popupMessageReceived && isGecko) 124 | { 125 | var rootElement = iframe.contentDocument.documentElement; 126 | var width = rootElement.dataset.width; 127 | var height = rootElement.dataset.height; 128 | if (width && height) 129 | resizePopup(width, height); 130 | } 131 | 132 | if (popupMessageReceived) 133 | { 134 | iframe.className = "visible"; 135 | 136 | var popupCloseListener = function() 137 | { 138 | iframe.className = glassPane.className = ""; 139 | document.removeEventListener("click", popupCloseListener); 140 | }; 141 | document.addEventListener("click", popupCloseListener, false); 142 | } 143 | else 144 | { 145 | glassPane.className = ""; 146 | window.removeEventListener("message", popupMessageListener); 147 | } 148 | 149 | iframe.removeEventListener("load", popupLoadListener); 150 | }; 151 | iframe.addEventListener("load", popupLoadListener, false); 152 | 153 | iframe.src = url; 154 | glassPane.className = "visible"; 155 | } 156 | })(this); 157 | -------------------------------------------------------------------------------- /devTool/popup.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Adblock Plus , 3 | * Copyright (C) 2006-2016 Eyeo GmbH 4 | * 5 | * Adblock Plus is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License version 3 as 7 | * published by the Free Software Foundation. 8 | * 9 | * Adblock Plus is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with Adblock Plus. If not, see . 16 | */ 17 | 18 | "use strict"; 19 | 20 | const {require} = ext.backgroundPage.getWindow(); 21 | 22 | const {Filter} = require("filterClasses"); 23 | const {FilterStorage} = require("filterStorage"); 24 | const {Prefs} = require("prefs"); 25 | const {checkWhitelisted} = require("whitelisting"); 26 | const {getDecodedHostname} = require("url"); 27 | 28 | let page = null; 29 | 30 | function onLoad() 31 | { 32 | ext.pages.query({active: true, lastFocusedWindow: true}, pages => 33 | { 34 | page = pages[0]; 35 | 36 | // Mark page as 'local' or 'nohtml' to hide non-relevant elements 37 | if (!page || (page.url.protocol != "http:" && 38 | page.url.protocol != "https:")) 39 | document.body.classList.add("local"); 40 | else if (!require("filterComposer").isPageReady(page)) 41 | { 42 | document.body.classList.add("nohtml"); 43 | require("messaging").getPort(window).on( 44 | "composer.ready", (message, sender) => 45 | { 46 | if (sender.page.id == page.id) 47 | document.body.classList.remove("nohtml"); 48 | } 49 | ); 50 | } 51 | 52 | // Ask content script whether clickhide is active. If so, show cancel button. 53 | // If that isn't the case, ask background.html whether it has cached filters. If so, 54 | // ask the user whether she wants those filters. 55 | // Otherwise, we are in default state. 56 | if (page) 57 | { 58 | if (checkWhitelisted(page)) 59 | document.body.classList.add("disabled"); 60 | 61 | page.sendMessage({type: "composer.content.getState"}, response => 62 | { 63 | if (response && response.active) 64 | document.body.classList.add("clickhide-active"); 65 | }); 66 | } 67 | }); 68 | 69 | document.getElementById("enabled").addEventListener("click", toggleEnabled, false); 70 | document.getElementById("clickhide").addEventListener("click", activateClickHide, false); 71 | document.getElementById("clickhide-cancel").addEventListener("click", cancelClickHide, false); 72 | document.getElementById("options").addEventListener("click", () => 73 | { 74 | ext.showOptions(); 75 | }, false); 76 | 77 | // Set up collapsing of menu items 78 | for (let collapser of document.getElementsByClassName("collapse")) 79 | { 80 | collapser.addEventListener("click", toggleCollapse, false); 81 | if (!Prefs[collapser.dataset.option]) 82 | document.getElementById(collapser.dataset.collapsable).classList.add("collapsed"); 83 | } 84 | } 85 | 86 | function toggleEnabled() 87 | { 88 | let disabled = document.body.classList.toggle("disabled"); 89 | if (disabled) 90 | { 91 | let host = getDecodedHostname(page.url).replace(/^www\./, ""); 92 | let filter = Filter.fromText("@@||" + host + "^$document"); 93 | if (filter.subscriptions.length && filter.disabled) 94 | filter.disabled = false; 95 | else 96 | { 97 | filter.disabled = false; 98 | FilterStorage.addFilter(filter); 99 | } 100 | } 101 | else 102 | { 103 | // Remove any exception rules applying to this URL 104 | let filter = checkWhitelisted(page); 105 | while (filter) 106 | { 107 | FilterStorage.removeFilter(filter); 108 | if (filter.subscriptions.length) 109 | filter.disabled = true; 110 | filter = checkWhitelisted(page); 111 | } 112 | } 113 | } 114 | 115 | function activateClickHide() 116 | { 117 | document.body.classList.add("clickhide-active"); 118 | page.sendMessage({type: "composer.content.startPickingElement"}); 119 | 120 | // Close the popup after a few seconds, so user doesn't have to 121 | activateClickHide.timeout = window.setTimeout(ext.closePopup, 5000); 122 | } 123 | 124 | function cancelClickHide() 125 | { 126 | if (activateClickHide.timeout) 127 | { 128 | window.clearTimeout(activateClickHide.timeout); 129 | activateClickHide.timeout = null; 130 | } 131 | document.body.classList.remove("clickhide-active"); 132 | page.sendMessage({type: "composer.content.finished"}); 133 | } 134 | 135 | function toggleCollapse(event) 136 | { 137 | let collapser = event.currentTarget; 138 | Prefs[collapser.dataset.option] = !Prefs[collapser.dataset.option]; 139 | collapser.parentNode.classList.toggle("collapsed"); 140 | } 141 | 142 | document.addEventListener("DOMContentLoaded", onLoad, false); 143 | --------------------------------------------------------------------------------