`

Chrome插件开发练习 - 还未完成

 
阅读更多

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

 

分享到:
评论

相关推荐

    chrome-extension-practice:一个用于练习的 Chrome 扩展示例

    - **打包和发布**:完成扩展开发后,可以将所有文件打包成`.crx`文件,然后上传到Chrome Web Store供用户安装。也可以选择作为未打包扩展在本地安装测试。 通过"chrome-extension-practice"项目,开发者不仅可以...

    Codeivate Chrome-crx插件

    7. **社交互动**:虽然描述中未提及,但通常这类扩展可能还包含了与其他Codeivate用户互动的功能,比如查看排行榜、分享成就等,增加学习过程中的趣味性和竞争性。 总结起来,Codeivate Chrome-crx插件是Codeivate...

    谷歌浏览器手势插件怎么操作.docx

    2. **自定义手势**:除了默认的手势动作外,大多数鼠标手势插件还支持用户自定义新的手势及其功能。您可以在设置页面中创建新的手势,并指定其执行的具体命令,如关闭当前标签页、刷新页面等。 3. **实践操作**:...

    Codeforces Problem Tracker-crx插件

    安装完成后,用户可以在Chrome浏览器的扩展工具栏中找到该插件的图标并开始使用。 6. **安全性与隐私**:虽然插件能提升用户体验,但安装任何第三方扩展时都应谨慎,确保其来自可信赖的源。Codeforces Problem ...

    FreeCodeCamp launcher-crx插件

    只需点击浏览器扩展图标,就能立刻进入学习环境,开始编程挑战或者继续未完成的课程。 **安装与使用** 1. 下载`.crx`文件:首先,你需要从可信赖的源下载FreeCodeCamp_launcher.crx文件。 2. 安装扩展:将文件拖放...

    A2OJ Enhancer-crx插件

    **A2OJ Enhancer-crx插件**是一款专为编程爱好者和竞赛程序员设计的Chrome浏览器扩展程序,它增强了A2OJ(Algorithm Online Judge)网站的用户体验,使其更具交互性和可视化效果。A2OJ是一个在线编程练习平台,用户...

    Astro Bot-crx插件

    **Astro Bot-crx插件**是一款专为程序员和开发者设计的Chrome浏览器扩展程序,它在用户打开新标签页时会展示一个随机的编程问题,旨在帮助开发者保持和提升编程技能,持续学习新的编程概念和技术。 这款插件的核心...

    Codingame puzzles accordions-crx插件

    这有助于用户集中精力解决未完成的挑战,同时方便快速访问已解决的问题。 2. **单击拼图部分标题以切换其可见性**:用户只需点击每个谜题标题,即可实现该部分的展开或收起。这种交互设计使得操作简单直观,无需...

    Feeling Meh ?!-crx插件

    这些功能的实现依赖于JavaScript和Chrome浏览器提供的API,如chrome.tabs 和 chrome.notifications,来完成对浏览器行为的控制和通知的发送。 此外,考虑到隐私和安全,Chrome扩展在获取用户数据时需要遵循严格的...

    基于JavaScript+HTML+CSS+js的静态网页计算器-源码

    - 使用浏览器的开发者工具(如Chrome的DevTools)进行实时查看和修改网页元素,调试JavaScript代码。 6. 响应式设计: - 虽然本项目未特别提及响应式设计,但现代网页通常需要适应不同设备的屏幕尺寸。可以利用...

    kulfi:fncJS 的 UI 测试框架

    2. **浏览器兼容性**:Kulfi 支持多种现代浏览器,包括Chrome、Firefox、Safari和Edge,确保你的应用在各种环境下表现一致。 3. **断言库集成**:Kulfi 内置了强大的断言库,支持丰富的比较和验证操作,确保测试...

Global site tag (gtag.js) - Google Analytics