manifest.json的内容:
{ "name" : "My First Extension", "version" : "1.0", "manifest_version" : 2, "description" : "The first extension that I made.", "browser_action" : { "default_icon" : "image/icon.png", "default_popup" : "popup.html" }, "permissions" : [ "http://m.weather.com.cn/*" ] }
popup.js的内容
(function(cityName){ var prefixURL = 'http://m.weather.com.cn/data/'; var prefixURLCurrent = 'http://m.weather.com.cn/data/sk/'; var surfix = ".html"; var cityCode; switch(cityName){ case 'dalian': cityCode = '101070201'; } var wholeURL = prefixURL + cityCode + surfix; var configuration = { 'dataType' : 'json', 'type' : 'get', // Here, must be get method. 'url' : wholeURL, 'crossDomain' : true, 'timeout' : 60000, 'success' : successCallback, 'error' : errorCallback }; $.ajax(configuration); })('dalian'); /** * * @param data * @param textStatus */ function successCallback(data, textStatus){ /* <tr id="day-1-top"> <td rowspan="2" class="date">22日星期三</td> <td class="time">白天</td> <td class="phenomena-image-1">图</td> <td class="phenomena">多云</td> <td class="temperature">高温20C</td> <td class="wind-direction">东风</td> <td class="wind-force">4-5级</td> </tr> <tr id="day-1-bottom"> <td class="time">夜间</td> <td class="phenomena-image-2">图</td> <td class="phenomena">多云</td> <td class="temperature">低温13C</td> <td class="wind-direction">东南风</td> <td class="wind-force">4-5级</td> </tr> */ var table = $('#forecast_table'); var info = data.weatherinfo; $('#city_name').text(info.city); for(var n = 1; n < 7; n++){ // 风力 var windForce = info['fl' + n].split("转"); // 温度 var temperature = info['temp' + n].split('~'); // 风向 var windDirection = info['wind' + n]; var reg = new RegExp("[0-9]", "g"); var result = reg.exec(windDirection); var directionStr = windDirection.substring(0, result['index']).split('转'); var topRow = $('<tr id=day-' + n + '-top></tr>').appendTo(table) .append('<td rowspan="2" class="date">' + info.date_y + '</td>') .append('<td class="time">白天</td>') .append('<td class="phenomena-image-1"></td>') .append('<td class="phenomena">' + info['img_title' + (2 * n - 1)] + '</td>') .append('<td class="temperature">' + temperature[0] + '</td>') .append('<td class="wind-direction">' + directionStr[0] + '</td>') .append('<td class="wind-force">' + windForce[0] + '</td>'); $('<tr id=day-' + n + '-bottom></tr>').insertAfter(topRow) .append('<td class="time">夜间</td>') .append('<td class="phenomena-image-1"></td>') .append('<td class="phenomena">' + info['img_title' + 2 * n] + '</td>') .append('<td class="temperature">' + temperature[1] + '</td>') .append('<td class="wind-direction">' + (directionStr[1] ? directionStr[1] : directionStr[0]) + '</td>') .append('<td class="wind-force">' + (windForce[1] ? windForce[1] : windForce[0]) + '</td>'); } } function errorCallback(request, textStatus, errorThrown){ console.info(textStatus); }
popup.html的内容:
<!doctype html> <html> <head> <title>Hello</title> <link type="text/css" rel="stylesheet" href="style/popup.css"> </head> <body> <div class="container"> <div id="city_name"></div> <table id="forecast_table" class="forecast-table"> <tr id="title_row" class="title-row"> <td colspan="2" class="date-title">日期</td> <td colspan="2" class="phenomena-title">天气现象</td> <td class="temperature-title">气温</td> <td class="wind-direction-title">风向</td> <td class="wind-force-title">风力</td> </tr> </table> </div> </body> <script type="text/javascript" src="script/jquery-1.8.2.js"></script> <script type="text/javascript" src="script/popup.js"></script> </html>
popup.css的内容:
.container { width: 600px; height: 400px; } .forecast-table { border-collapse: collapse; width: 100%; } .forecast-table tr { border-top: 1px solid gray; border-bottom: 1px solid gray; border-left: 1px solid gray; } .forecast-table tr td { border-right: 1px solid gray; text-align: center; vertical-align: middle; } .forecast-table .title-row td { height: 30px; font-weight: bold; } .forecast-table .title-row .date-title { /* width: 25%; */ } .forecast-table .title-row .phenomena-title { /* width: 25%; */ } .forecast-table .title-row .temperature-title { /* width: 20%; */ } .forecast-table .title-row .wind-direction-title { /* width: 15%; */ } .forecast-table .title-row .wind-force-title { /* width: 15%; */ }
返回的数据的结构:
Object {weatherinfo: Object} weatherinfo: Object city: "大连" city_en: "dalian" cityid: "101070201" date: "" date_y: "2013年5月22日" fchh: "11" fl1: "4-5级" fl2: "4-5级" fl3: "4-5级" fl4: "4-5级" fl5: "4-5级转5-6级" fl6: "5-6级转4-5级" fx1: "东风" fx2: "东南风" img1: "1" img2: "99" img3: "1" img4: "2" img5: "1" img6: "99" img7: "1" img8: "99" img9: "2" img10: "7" img11: "7" img12: "1" img_single: "1" img_title1: "多云" // 今天白天的天气 img_title2: "多云" // 今天晚上的天气 img_title3: "多云" // 明天白天的天气 img_title4: "阴" // 明天晚上的天气,依次类推 img_title5: "多云" img_title6: "多云" img_title7: "多云" img_title8: "多云" img_title9: "阴" img_title10: "小雨" img_title11: "小雨" img_title12: "多云" img_title_single: "多云" index: "较舒适" index48: "较舒适" index48_d: "建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。" index48_uv: "最弱" index_ag: "易发" index_cl: "较适宜" index_co: "舒适" index_d: "建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。" index_ls: "适宜" index_tr: "很适宜" index_uv: "弱" index_xc: "较不宜" st1: "20" st2: "12" st3: "21" st4: "12" st5: "20" st6: "13" temp1: "20℃~13℃" temp2: "22℃~15℃" temp3: "21℃~15℃" temp4: "20℃~14℃" temp5: "19℃~14℃" temp6: "19℃~15℃" tempF1: "68℉~55.4℉" tempF2: "71.6℉~59℉" tempF3: "69.8℉~59℉" tempF4: "68℉~57.2℉" tempF5: "66.2℉~57.2℉" tempF6: "66.2℉~59℉" weather1: "多云" // 今天的天气 weather2: "多云转阴" // 明天的天气,依次类推 weather3: "多云" weather4: "多云" weather5: "阴转小雨" weather6: "小雨转多云" week: "星期三" wind1: "东风转东南风4-5级" wind2: "东南风转南风4-5级" wind3: "东北风转东南风4-5级" wind4: "东南风4-5级" wind5: "东南风4-5级转5-6级" wind6: "东北风5-6级转4-5级" __proto__: Object __proto__: Object
相关推荐
- **打包和发布**:完成扩展开发后,可以将所有文件打包成`.crx`文件,然后上传到Chrome Web Store供用户安装。也可以选择作为未打包扩展在本地安装测试。 通过"chrome-extension-practice"项目,开发者不仅可以...
7. **社交互动**:虽然描述中未提及,但通常这类扩展可能还包含了与其他Codeivate用户互动的功能,比如查看排行榜、分享成就等,增加学习过程中的趣味性和竞争性。 总结起来,Codeivate Chrome-crx插件是Codeivate...
2. **自定义手势**:除了默认的手势动作外,大多数鼠标手势插件还支持用户自定义新的手势及其功能。您可以在设置页面中创建新的手势,并指定其执行的具体命令,如关闭当前标签页、刷新页面等。 3. **实践操作**:...
安装完成后,用户可以在Chrome浏览器的扩展工具栏中找到该插件的图标并开始使用。 6. **安全性与隐私**:虽然插件能提升用户体验,但安装任何第三方扩展时都应谨慎,确保其来自可信赖的源。Codeforces Problem ...
只需点击浏览器扩展图标,就能立刻进入学习环境,开始编程挑战或者继续未完成的课程。 **安装与使用** 1. 下载`.crx`文件:首先,你需要从可信赖的源下载FreeCodeCamp_launcher.crx文件。 2. 安装扩展:将文件拖放...
**A2OJ Enhancer-crx插件**是一款专为编程爱好者和竞赛程序员设计的Chrome浏览器扩展程序,它增强了A2OJ(Algorithm Online Judge)网站的用户体验,使其更具交互性和可视化效果。A2OJ是一个在线编程练习平台,用户...
这种格式的文件可以轻松地通过Chrome浏览器的扩展程序管理界面进行安装,或者通过修改浏览器设置来加载未打包的扩展。一旦安装完成,插件会无缝地集成到浏览器中,并根据用户的设置实时地对输入的文本进行处理。 ...
**Astro Bot-crx插件**是一款专为程序员和开发者设计的Chrome浏览器扩展程序,它在用户打开新标签页时会展示一个随机的编程问题,旨在帮助开发者保持和提升编程技能,持续学习新的编程概念和技术。 这款插件的核心...
它提供了一个富有挑战性的游戏环境,不仅能够锻炼玩家的思维能力,还能够帮助他们在学习和工作之余放松大脑,通过不断的挑战和练习,提升解决问题的能力。因此,DD Node Puzzle-crx不仅是一款插件,更是一种积极向上...
这有助于用户集中精力解决未完成的挑战,同时方便快速访问已解决的问题。 2. **单击拼图部分标题以切换其可见性**:用户只需点击每个谜题标题,即可实现该部分的展开或收起。这种交互设计使得操作简单直观,无需...
这些功能的实现依赖于JavaScript和Chrome浏览器提供的API,如chrome.tabs 和 chrome.notifications,来完成对浏览器行为的控制和通知的发送。 此外,考虑到隐私和安全,Chrome扩展在获取用户数据时需要遵循严格的...
- 使用浏览器的开发者工具(如Chrome的DevTools)进行实时查看和修改网页元素,调试JavaScript代码。 6. 响应式设计: - 虽然本项目未特别提及响应式设计,但现代网页通常需要适应不同设备的屏幕尺寸。可以利用...
2. **浏览器兼容性**:Kulfi 支持多种现代浏览器,包括Chrome、Firefox、Safari和Edge,确保你的应用在各种环境下表现一致。 3. **断言库集成**:Kulfi 内置了强大的断言库,支持丰富的比较和验证操作,确保测试...