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

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

?? newsblog.js

?? 現在很火的郵件客戶端軟件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一区二区三区免费野_久草精品视频
亚洲第一狼人社区| 国产日韩精品一区二区浪潮av | 极品美女销魂一区二区三区免费| 欧美日韩色一区| 日本免费新一区视频| 欧美一区欧美二区| 久久99深爱久久99精品| 久久久久久麻豆| 不卡一区中文字幕| 亚洲韩国精品一区| 日韩女同互慰一区二区| 国产美女视频91| 亚洲人成小说网站色在线| 色先锋久久av资源部| 香蕉av福利精品导航| 欧美一区二区精品在线| 国产精品资源在线看| 国产精品久久久久9999吃药| 色综合一个色综合| 日本不卡视频在线| 日本一区二区三区在线不卡 | 精品一区二区在线视频| 中文字幕av一区二区三区高| 97久久超碰国产精品| 亚洲柠檬福利资源导航| 欧美一级久久久久久久大片| 国产超碰在线一区| 亚洲自拍都市欧美小说| 精品国产91乱码一区二区三区 | 在线播放中文一区| 国产高清成人在线| 亚洲一区二区视频在线| 久久午夜老司机| 欧美伊人精品成人久久综合97| 蜜桃久久久久久| 中文字幕欧美一| 欧美大片一区二区三区| 91视频.com| 国产伦精一区二区三区| 亚洲18色成人| ...xxx性欧美| www国产精品av| 欧美日韩国产一二三| 成人午夜激情在线| 精油按摩中文字幕久久| 亚洲成人av中文| 国产精品国模大尺度视频| 日韩欧美国产精品一区| 99国产精品久久久久久久久久| 精品综合免费视频观看| 亚洲五码中文字幕| 亚洲码国产岛国毛片在线| 久久久久9999亚洲精品| 91精品国产综合久久精品app| 91免费视频观看| 处破女av一区二区| 精品在线亚洲视频| 蜜臀av性久久久久蜜臀aⅴ| 亚洲精品日韩专区silk| 中文字幕av一区二区三区免费看 | 日韩中文字幕区一区有砖一区| 国产精品久久久久久久久久久免费看| 欧美一区二区三区日韩视频| 精品1区2区3区| 色综合天天综合在线视频| 国产盗摄精品一区二区三区在线 | 欧美日韩国产免费| 一本大道久久a久久综合婷婷| 国产精品1区2区| 国产激情一区二区三区四区 | 成人av免费在线观看| 国模无码大尺度一区二区三区| 日韩电影在线免费看| 天堂成人免费av电影一区| 一区二区三区不卡视频在线观看| 自拍偷拍欧美精品| 国产精品成人一区二区艾草| 国产精品亲子伦对白| 久久毛片高清国产| 久久久精品国产99久久精品芒果| 精品国产91乱码一区二区三区| 精品久久久久久久久久久院品网| 日韩欧美在线一区二区三区| 日韩精品中文字幕在线一区| 精品美女被调教视频大全网站| 欧美大度的电影原声| 精品欧美一区二区三区精品久久 | 青青草97国产精品免费观看| 日韩精品乱码免费| 美女www一区二区| 国产专区欧美精品| www.欧美色图| 欧美视频一区二区三区四区| 欧美伦理电影网| 26uuu久久天堂性欧美| 国产人伦精品一区二区| 成人免费在线视频| 亚洲电影第三页| 日本不卡视频一二三区| 国产综合成人久久大片91| 成人免费高清在线观看| 色综合一区二区| 91 com成人网| 久久欧美一区二区| 亚洲欧美视频在线观看视频| 亚洲r级在线视频| 精品一区二区在线观看| av亚洲精华国产精华精| 欧美情侣在线播放| 久久久久亚洲蜜桃| 一区二区三区日韩欧美精品 | 久久久久97国产精华液好用吗| 亚洲丝袜美腿综合| 日韩和欧美的一区| 东方aⅴ免费观看久久av| 欧美午夜一区二区| 久久亚洲一区二区三区明星换脸| 国产精品午夜在线| 日韩有码一区二区三区| 国产精品99久久久久久久vr | 国产精品99精品久久免费| 日本精品免费观看高清观看| 日韩一二三区不卡| 自拍偷拍亚洲综合| 极品少妇xxxx精品少妇| 欧美性受xxxx黑人xyx性爽| 精品sm捆绑视频| 玉米视频成人免费看| 国产麻豆精品在线观看| 欧美日韩成人综合在线一区二区| 国产视频一区二区在线| 亚洲午夜精品17c| 成人aaaa免费全部观看| 日韩欧美亚洲国产精品字幕久久久| 中文字幕日韩av资源站| 国产一区二区三区香蕉| 欧美性视频一区二区三区| 日本一区二区综合亚洲| 久久激情综合网| 欧美日韩成人激情| 亚洲麻豆国产自偷在线| 国产99久久久国产精品潘金网站| 日韩欧美电影一区| 午夜不卡av免费| 色婷婷久久久亚洲一区二区三区| 国产亚洲自拍一区| 蜜桃视频一区二区| 在线综合亚洲欧美在线视频| 亚洲欧美国产三级| 成人午夜免费av| 欧美激情在线观看视频免费| 久久精品国产99国产| 91精品国产黑色紧身裤美女| 亚洲中国最大av网站| 91在线视频免费91| 国产精品视频线看| 风间由美一区二区av101| 精品久久久久久综合日本欧美| 男人的天堂亚洲一区| 欧美三级乱人伦电影| 亚洲与欧洲av电影| 91官网在线免费观看| 亚洲视频在线一区二区| 99精品桃花视频在线观看| 国产免费观看久久| 成年人国产精品| 国产精品成人免费| 色哟哟精品一区| 伊人色综合久久天天人手人婷| 99精品偷自拍| 亚洲最色的网站| 欧美日本视频在线| 日韩精品亚洲一区| 日韩欧美国产电影| 国产麻豆精品theporn| 国产精品网站在线观看| 99在线视频精品| 亚洲一卡二卡三卡四卡| 欧美女孩性生活视频| 天天色天天操综合| 日韩美女一区二区三区| 国产一区二区三区免费| 中文一区一区三区高中清不卡| 大胆亚洲人体视频| 亚洲欧洲制服丝袜| 欧美三级欧美一级| 久久成人免费网站| 国产肉丝袜一区二区| 99久久亚洲一区二区三区青草| 中文字幕制服丝袜成人av | 成人美女视频在线看| 亚洲视频免费观看| 欧美日韩中文国产| 九九视频精品免费| 亚洲欧洲日本在线| 欧美日韩国产高清一区二区三区| 久草热8精品视频在线观看| 成人免费在线观看入口| 欧美日韩三级视频| 国产 日韩 欧美大片|