⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rssreader.js

📁 ajax source code .
💻 JS
字号:
App.Modules.RssReader = function(obj){
	var data = obj.dataObj.data;
	var localData = new Object();
	var el = obj.elm_moduleContent;
		
	this.edit = function() {
		var editContent = obj.elm_editContent;
		
		var content = '<table cellpadding="0" cellspacing="0" class="formTable">'+
					'<tr>'+
					'<td><span class="formLabel">'+App.Loc.RssReader_edit_title+' :</span></td>'+
					'<td><input type="text" class="inputClean" accesskey="t" maxlength="100" value="'+obj.dataObj.title+'" style="width:120px"/></td>'+
					'<td><input type="submit" value="'+App.Loc.editSave+'" class="buttonClean"/></td>'+
					'</tr>'+
					'<tr>'+
					'<td><span class="formLabel">'+App.Loc.RssReader_edit_feed+' :</span></td>'+
					'<td><input type="text" class="inputClean" accesskey="t" maxlength="150" value="'+obj.dataObj.feedUrl+'" style="width:120px"/></td>'+
					'<td><input type="submit" value="'+App.Loc.editSave+'" class="buttonClean"/></td>'+
					'</tr>'+
					'<tr>'+
					'<td><span class="formLabel">'+App.Loc.RssReader_edit_nbItems+' :</span></td>'+
					'<td>'+
						'<select style="width:45px">'+getOptionList()+'</select>'+
					'</td>'+
					'<td></td>'+
					'</tr>'+
					'<tr>'+
					'<td><span class="formLabel">'+App.Loc.RssReader_edit_links+' :</span></td>'+
					'<td colspan="2">'+
						'<input id="openLinks" type="checkbox"/><label for="openLinks" style="margin-left:5px">'+App.Loc.RssReader_edit_openLinks+'</label>'+
					'</td>'+
					'</tr>'+
					/*'<tr>'+
					'<td><span class="formLabel">Date :</span></td>'+
					'<td>'+
						'<input type="checkbox">'+
					'</td>'+
					'<td></td>'+
					'</tr>'+*/
				'</table>';
		
		editContent.innerHTML = content;
		
		var table = editContent.firstChild.firstChild;
		var tr1 = table.childNodes[0];
		var tr2 = table.childNodes[1];
		
		if (App.mode=='featuredPage') {
			tr1.style.display = "none";
			tr2.style.display = "none";
		}
		
		var tr3 = table.childNodes[2];
		var tr4 = table.childNodes[3];
		var input4 = tr4.childNodes[1].firstChild;
		input4.checked = (data.openOutside==0 || !data.openOutside) ? false : true;
		input4.onclick = function() {
			data.openOutside = (this.checked) ? 1 : 0;
			obj.save();
		}
		
		var input1 = tr1.childNodes[1].firstChild;
		var inputButton1 = tr1.childNodes[2].firstChild;
		var input2 = tr2.childNodes[1].firstChild;
		var inputButton2 = tr2.childNodes[2].firstChild;
		var input3 = tr3.childNodes[1].firstChild;
		
		inputButton1.onclick = function() {
			obj.dataObj.title = input1.value;
			obj.elm_title.innerHTML = '';
			obj.elm_title.appendChild(document.createTextNode(obj.dataObj.title));
			obj.save();
		}
		inputButton2.onclick = function() {
			if (input2.value != obj.dataObj.feedUrl) {
				obj.dataObj.title = "";
				obj.elm_title.innerHTML = App.Loc.loading;
					
				input1.disabled = true;
				inputButton1.disabled = true;
				input3.disabled = true;
				input4.disabled = true;
				
				el.innerHTML = App.Loc.loading;
				App.addNewFeed(input2.value, addFeedResponse);
			}
		}
		input3.onchange = function() {
			data.nbTitles = this.value;
			displayItems();
			obj.save();
		}
		
		function getOptionList() {
			var c='';
			var ln = localData.items.length;
			for (var z=0; z<ln; z++) {
				if ((z+1)==data.nbTitles) {
					c+='<option value="'+(z+1)+'" selected>'+(z+1);
				} else {
					c+='<option value="'+(z+1)+'">'+(z+1);
				}
			}
			return c;
		}
		
		function addFeedResponse(response, feedUrl, id) {
			if (response.responseText == '' || response.responseXML.documentElement==null || response.responseXML.documentElement.nodeName=="parsererror") { // si le flux n'est pas valide
				obj.elm_title.innerHTML = App.Loc.error;
				el.innerHTML = App.Loc.feedNotValid;
			} else {
				App.Nav.isFeedsUpdated = true;
				setTimeout(App.Nav.openMyFeeds,1);
			
				data.feedId = id;
				obj.dataObj.feedUrl = feedUrl;
				updateRSSFeed(response);
			}
		}
		
		function updateRSSFeed(response) {
			input1.disabled = false;
			inputButton1.disabled = false;
			input3.disabled = false;
			input4.disabled = false;
			displayRSSFeed(response);
			obj.save();
			input1.value = obj.dataObj.title;
			
			var td = input3.parentNode;
			var c = '<select style="width:45px">'+getOptionList()+'</select>';
			td.innerHTML = c;
			input3 = td.firstChild;
			input3.onchange = function() {
				data.nbTitles = this.value;
				displayItems();
				obj.save();
			}
		}
	}
	
	function displayItems() {
		var divUL = document.createElement("ul");
		divUL.className = "rssItemList";
		
		for (var z=0; z<data.nbTitles; z++) {
			var title = localData.items[z].getElementsByTagName("title")[0];
			title = (title.firstChild) ? title.firstChild.nodeValue : localData.items[z].getElementsByTagName("description")[0].firstChild.nodeValue.substring(0,40)+"...";
			
			var link = localData.items[z].getElementsByTagName("link")[0];
			if (link!=null) {
				link = (localData.type == 1) ? link.getAttribute("href") : link.firstChild.nodeValue;
			} else {
				link = null;
			}
			
			/*var d = localData.items[z].getElementsByTagName("dc:date")[0].firstChild.nodeValue;alert(d);*/
			
			var divLI = document.createElement("li");
			divLI.setAttribute("itemNum", z);
			divLI.setAttribute("url", link);
			divLI.innerHTML = '<span>'+title+'</span>';
			divLI.firstChild.onclick = function() {
				if (data.openOutside==0 || !data.openOutside || link==null) {
					var selectedItemNum = this.parentNode.getAttribute("itemNum");
					App.FeedReader.display({title: obj.dataObj.title, moduleLocalData:localData, moduleData:data, selectedItemIndex:selectedItemNum});
				} else {
					window.open(this.parentNode.getAttribute("url"));
				}
			}
			divLI.firstChild.style.cursor = "pointer";
			divLI.firstChild.onmouseover = function() {
				this.style.color = "#F60";
				/*this.style.borderBottom = "1px solid #F60";*/
				this.style.textDecoration = "underline";
			}
			divLI.firstChild.onmouseout = function() {
				this.style.color = "#333";
				/*this.style.borderBottom = "none";*/
				this.style.textDecoration = "none";
			}
			divUL.appendChild(divLI);
		}
		el.innerHTML = "";
		el.appendChild(divUL);
	}
	
	
	function displayRSSFeed(response) {
		if (response.responseText == '' || response.responseXML.documentElement==null || response.responseXML.documentElement.nodeName=="parsererror") { // si le flux n'est pas valide
			obj.elm_title.innerHTML = App.Loc.error;
			el.innerHTML = App.Loc.feedNotValid;
			localData.items = [];
			obj.onLoadModule();
		} else {
			if (Browser.isMozilla) Utils.cleanWhitespace(response.responseXML.documentElement);
			obj.dataObj.currentServerRequest = null;
		
			var root = response.responseXML.documentElement;
			if (root.nodeName=="feed") {
				localData.type = 1;
				localData.items = response.responseXML.getElementsByTagName("entry");
				localData.feedSite = response.responseXML.getElementsByTagName("link")[0].getAttribute("href");
			} else {
				localData.type = 0;
				localData.items = response.responseXML.getElementsByTagName("item");
				localData.feedSite = response.responseXML.getElementsByTagName("link")[0].firstChild.nodeValue;
			}
			
			if (data.nbTitles==null) data.nbTitles=7;
			data.nbTitles = (localData.items.length>data.nbTitles) ? data.nbTitles : localData.items.length;
			
			if (obj.dataObj.title=="") {
				obj.dataObj.title = response.responseXML.getElementsByTagName("title")[0].firstChild.nodeValue;
				obj.elm_title.innerHTML = obj.dataObj.title;
			}
			
			displayItems();
			obj.onLoadModule();
		}
	}
	
	if (obj.dataObj.title == "") obj.elm_title.innerHTML = App.Loc.loading;
	obj.dataObj.currentServerRequest = Request.sendGET(proxyURL+escape(obj.dataObj.feedUrl), displayRSSFeed);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -