亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? newsblog.js

?? 現(xiàn)在很火的郵件客戶端軟件thunderbird的源碼
?? JS
?? 第 1 頁 / 共 2 頁
字號:
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is the News&Blog Feed Downloader * * The Initial Developer of the Original Code is * The Mozilla Foundation. * Portions created by the Initial Developer are Copyright (C) 2004 * the Initial Developer. All Rights Reserved. * * Contributor(s): *  Myk Melez <myk@mozilla.org) (Original Author) *  David Bienvenu <bienvenu@nventure.com>  * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */var gExternalScriptsLoaded = false;var nsNewsBlogFeedDownloader ={  downloadFeed: function(aUrl, aFolder, aQuickMode, aTitle, aUrlListener, aMsgWindow)  {    if (!gExternalScriptsLoaded)      loadScripts();    // we don't yet support the ability to check for new articles while we are in the middle of     // subscribing to a feed. For now, abort the check for new feeds.     if (progressNotifier.mSubscribeMode)    {      debug('Aborting RSS New Mail Check. Feed subscription in progress\n');      return;    }    // if folder seems to have lost its feeds, look in DS for feeds.    if (!aUrl.length)    {      var ds = getSubscriptionsDS(aFolder.server);      var enumerator = ds.GetSources(FZ_DESTFOLDER, aFolder, true);      var concatenatedUris = "";      while (enumerator.hasMoreElements())      {        var containerArc = enumerator.getNext();        var uri = containerArc.QueryInterface(Components.interfaces.nsIRDFResource).Value;        if (concatenatedUris.length > 0)          concatenatedUris += "|";        concatenatedUris += uri;      }      if (concatenatedUris.length > 0)      {        aUrl = concatenatedUris;        try        {          var msgdb = aFolder.getMsgDatabase(null);          var folderInfo = msgdb.dBFolderInfo;          folderInfo.setCharPtrProperty("feedUrl", concatenatedUris);        }        catch (ex) {dump(ex);}      }    }    // aUrl may be a delimited list of feeds for a particular folder. We need to kick off a download    // for each feed.    var feedUrlArray = aUrl.split("|");    // we might just pull all these args out of the aFolder DB, instead of passing them in...    var rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"]        .getService(Components.interfaces.nsIRDFService);    progressNotifier.init(aMsgWindow, false);    for (url in feedUrlArray)    {      if (feedUrlArray[url])      {                id = rdf.GetResource(feedUrlArray[url]);        feed = new Feed(id, aFolder.server);        feed.folder = aFolder;        gNumPendingFeedDownloads++; // bump our pending feed download count        feed.download(true, progressNotifier);      }    }  },  subscribeToFeed: function(aUrl, aFolder, aMsgWindow)  {    if (!gExternalScriptsLoaded)      loadScripts();    // we don't support the ability to subscribe to several feeds at once yet...    // for now, abort the subscription if we are already in the middle of subscribing to a feed    // via drag and drop.    if (gNumPendingFeedDownloads)    {      debug('Aborting RSS subscription. Feed downloads already in progress\n');      return;    }    // if aFolder is null, then use the root folder for the first RSS account    if (!aFolder)    {      var accountManager = Components.classes["@mozilla.org/messenger/account-manager;1"]                           .getService(Components.interfaces.nsIMsgAccountManager);      var allServers = accountManager.allServers;      for (var i=0; i< allServers.Count() && !aFolder; i++)      {        var currentServer = allServers.GetElementAt(i).QueryInterface(Components.interfaces.nsIMsgIncomingServer);        if (currentServer && currentServer.type == 'rss')          aFolder = currentServer.rootFolder;            }    }    // What do we do if the user hasn't created an RSS account yet?     // for now, fall out, would be nice if we could force RSS account creation    if (!aFolder)      return;    // if aUrl is a feed url, then it is of the form: feed:http://somesite/feed.xml or     // feed://http://somesite/feed.xml    // Strip off the feed: part so we can subscribe to the contained URL.    if (/^feed:/i.test(aUrl))    {      aUrl = aUrl.replace(/^feed:/i, '');      // Strip off the optional forward slashes if we were given feed://      aUrl = aUrl.replace(/^\x2f\x2f/, '');    }    // make sure we aren't already subscribed to this feed before we attempt to subscribe to it.    if (feedAlreadyExists(aUrl, aFolder.server))    {      aMsgWindow.statusFeedback.showStatusString(GetNewsBlogStringBundle().GetStringFromName('subscribe-feedAlreadySubscribed'));           return;    }    var rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"]              .getService(Components.interfaces.nsIRDFService);        var itemResource = rdf.GetResource(aUrl);    var feed = new Feed(itemResource, aFolder.server);    feed.quickMode = feed.server.getBoolAttribute('quickMode');    if (!aFolder.isServer) // if the root server, create a new folder for the feed      feed.folder = aFolder; // user must want us to add this subscription url to an existing RSS folder.    progressNotifier.init(aMsgWindow, true);    gNumPendingFeedDownloads++;    feed.download(true, progressNotifier);  },  updateSubscriptionsDS: function(aFolder, aUnsubscribe)  {    if (!gExternalScriptsLoaded)      loadScripts();    // an rss folder was just renamed...we need to update our feed data source    var msgdb = aFolder.QueryInterface(Components.interfaces.nsIMsgFolder).getMsgDatabase(null);    var folderInfo = msgdb.dBFolderInfo;    var feedurls = folderInfo.getCharPtrProperty("feedUrl");    var feedUrlArray = feedurls.split("|");    var rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);    var ds = getSubscriptionsDS(aFolder.server);    for (url in feedUrlArray)    {      if (feedUrlArray[url])      {                id = rdf.GetResource(feedUrlArray[url]);        // get the node for the current folder URI        var node = ds.GetTarget(id, FZ_DESTFOLDER, true);        // we need to check and see if the folder is a child of the trash...if it is, then we can        // treat this as an unsubscribe action        if (aUnsubscribe)        {          var feeds = getSubscriptionsList(aFolder.server);          var index = feeds.IndexOf(id);          if (index != -1)            feeds.RemoveElementAt(index, false);          removeAssertions(ds, id);        }          else          ds.Change(id, FZ_DESTFOLDER, node, rdf.GetResource(aFolder.URI));      }    } // for each feed url in the folder property    ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); // flush any changes  },  QueryInterface: function(aIID)  {    if (aIID.equals(Components.interfaces.nsINewsBlogFeedDownloader) ||        aIID.equals(Components.interfaces.nsISupports))      return this;    Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;    return null;  }}var nsNewsBlogAcctMgrExtension = {   name: "newsblog",  chromePackageName: "messenger-newsblog",  showPanel: function (server)  {    return server.type == "rss";  },  QueryInterface: function(aIID)  {    if (aIID.equals(Components.interfaces.nsIMsgAccountManagerExtension) ||        aIID.equals(Components.interfaces.nsISupports))      return this;    Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;    return null;  }  }var nsFeedCommandLineHandler = {  /* nsISupports */  QueryInterface : function(aIID)   {    if (!aIID.equals(Components.interfaces.nsISupports) &&        !aIID.equals(Components.interfaces.nsICommandLineHandler))      throw Components.errors.NS_ERROR_NO_INTERFACE;    return this;  },  /* nsICommandLineHandler */  handle : function(cmdLine)   {    // we only care about "-mail someurl" where someurl is a feed: url    // we also don't want to remove the parameter in case we don't end up handling it...    var mailPos = cmdLine.findFlag("mail", false);    if (mailPos != -1 && cmdLine.length >= mailPos )    {       var uriStr = cmdLine.getArgument(mailPos + 1);      if (/^feed:/i.test(uriStr))      {        var mailWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService()                         .QueryInterface(Components.interfaces.nsIWindowMediator).getMostRecentWindow("mail:3pane");                         // if we don't have a 3 pane window visible already, then we can optimize and do nothing here,        // that will let the default command line handler create a 3pane window for us using the feed        // URL as an argument to that window when it gets constructed...so we only care about the        // case where we want to re-use an existing 3 pane to subscribe to the feed url        if (mailWindow)        {          cmdLine.handleFlagWithParam("mail", false); // eat up the arguments we are now handling          cmdLine.preventDefault = true; // prevent the default cmd line handler from doing anything          var feedHandler = Components.classes["@mozilla.org/newsblog-feed-downloader;1"].getService(Components.interfaces.nsINewsBlogFeedDownloader);          if (feedHandler)            feedHandler.subscribeToFeed(uriStr, null, mailWindow.msgWindow);        }              }    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲国产中文字幕欧美| 99久久精品国产一区二区三区 | 日韩一区二区免费高清| 99久久精品久久久久久清纯| 成人小视频免费在线观看| 国产成人亚洲综合色影视| 国产精品一区二区久激情瑜伽| 久久精品免费看| 精品在线播放午夜| 久草精品在线观看| 国产精品一线二线三线| 成人午夜碰碰视频| 在线亚洲一区二区| 91精品免费在线观看| 日韩一区二区三区免费观看| 精品国内二区三区| 欧美国产精品一区| 亚洲三级久久久| 国产精品18久久久久久久网站| 美腿丝袜亚洲一区| 国产麻豆精品在线观看| 成人白浆超碰人人人人| 在线国产亚洲欧美| 日韩欧美国产1| 国产欧美精品区一区二区三区| 中文字幕一区二区三区乱码在线 | 久久精品人人爽人人爽| 中文字幕五月欧美| 午夜欧美视频在线观看| 国产在线精品一区在线观看麻豆| 成人一区二区三区在线观看| 欧美在线免费播放| 日韩欧美一区二区三区在线| 国产精品午夜久久| 天堂成人国产精品一区| 国产精品伊人色| 日本道精品一区二区三区| 日韩一区二区三区视频在线观看 | 国产美女一区二区三区| 色诱亚洲精品久久久久久| 欧美一区二区三区白人| 中文子幕无线码一区tr| 午夜久久电影网| av一区二区三区黑人| 日韩欧美第一区| 亚洲国产欧美在线人成| 国产高清不卡一区| 欧美日韩视频一区二区| 中文字幕成人在线观看| 首页国产欧美日韩丝袜| 成人a免费在线看| 日韩一区二区三区四区| 亚洲一区二区五区| 成人av小说网| 欧美xingq一区二区| 亚洲午夜三级在线| 成人性生交大片免费看中文| 91精品麻豆日日躁夜夜躁| 一区二区在线观看不卡| 国产精品综合久久| 91精品蜜臀在线一区尤物| 一区二区三区免费网站| 国产大片一区二区| 日韩精品在线一区二区| 亚洲成人动漫一区| 在线视频国内一区二区| 亚洲人123区| 成人性生交大片免费看中文| 久久久久久久久免费| 毛片av中文字幕一区二区| 欧美日韩日日骚| 亚洲国产精品一区二区久久恐怖片| av电影天堂一区二区在线观看| 精品福利av导航| 国产精品综合在线视频| 亚洲精品一区二区三区福利| 免费在线观看日韩欧美| 日韩欧美国产高清| 久久99精品久久久久婷婷| 日韩精品一区二区三区在线观看 | 欧美人妖巨大在线| 亚洲mv在线观看| 欧美精品自拍偷拍| 亚洲国产综合人成综合网站| 欧美在线一区二区| 亚洲电影视频在线| 51久久夜色精品国产麻豆| 天堂午夜影视日韩欧美一区二区| 色哟哟在线观看一区二区三区| 亚洲免费高清视频在线| 欧美日韩国产区一| 青草av.久久免费一区| 日韩精品一区二区三区中文不卡 | 色婷婷av一区二区三区gif| 亚洲欧美电影院| 欧美日韩精品电影| 日本成人超碰在线观看| 日韩精品一区二区三区四区 | 午夜精品久久久久久久久 | 99国产精品国产精品毛片| 成人欧美一区二区三区小说| 91国产视频在线观看| 亚洲第一综合色| 欧美精品一区二区三区视频| 国产一区二区不卡| 亚洲天堂2014| 制服丝袜在线91| 国产成人午夜视频| 一区二区三区在线播| 欧美一区二区三区啪啪| 国产精品12区| 一区二区三区在线不卡| 亚洲精品一区二区三区精华液| 成人av手机在线观看| 亚欧色一区w666天堂| 久久亚洲一级片| 色久优优欧美色久优优| 久久国产尿小便嘘嘘| 亚洲日本在线天堂| 日韩视频在线你懂得| 不卡欧美aaaaa| 日韩成人免费看| 亚洲视频在线一区| 欧美大片国产精品| 一本久道久久综合中文字幕| 午夜一区二区三区在线观看| 欧美va在线播放| 欧洲在线/亚洲| 国产91丝袜在线18| 亚洲高清三级视频| 中文一区二区在线观看| 在线播放亚洲一区| 成人激情免费网站| 另类调教123区| 亚洲成人综合网站| 国产精品电影一区二区三区| 精品福利一二区| 欧美精品成人一区二区三区四区| 国产91丝袜在线播放九色| 蜜桃久久久久久| 一区二区三区免费在线观看| 欧美激情中文不卡| 日韩欧美国产精品| 在线不卡免费av| 欧美亚洲综合另类| 99这里只有精品| 国产激情一区二区三区| 经典三级视频一区| 美国毛片一区二区三区| 日韩精品免费专区| 亚洲国产另类av| 亚洲亚洲精品在线观看| 1000部国产精品成人观看| 国产色爱av资源综合区| 欧美本精品男人aⅴ天堂| 欧美一区二区在线看| 欧美日韩美少妇| 欧美狂野另类xxxxoooo| 91成人免费在线视频| jlzzjlzz亚洲日本少妇| 国产91精品入口| 成人性生交大片免费看视频在线| 麻豆国产精品777777在线| 日韩vs国产vs欧美| 日本视频一区二区| 蜜臀a∨国产成人精品| 日本成人超碰在线观看| 麻豆视频观看网址久久| 蜜桃一区二区三区四区| 韩国一区二区三区| 国内不卡的二区三区中文字幕| 久久精品国产一区二区| 国产综合一区二区| 国产麻豆精品在线| 成人动漫一区二区三区| 色综合激情久久| 欧美日韩极品在线观看一区| 91精品国产免费久久综合| 日韩欧美久久一区| 久久久久久久久久美女| 国产精品久久久久久久蜜臀| 综合网在线视频| 午夜视频一区在线观看| 久久国产剧场电影| 成人精品gif动图一区| 色综合久久中文字幕| 欧美色爱综合网| 日韩一区二区在线看| 国产午夜精品理论片a级大结局| 欧美韩国一区二区| 亚洲码国产岛国毛片在线| 亚洲国产精品自拍| 国模娜娜一区二区三区| av在线播放一区二区三区| 欧美亚洲丝袜传媒另类| 欧美电影免费观看高清完整版在| 国产视频一区在线播放| 亚洲国产一二三| 国产激情一区二区三区| 欧美亚洲综合色|