亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

開發自己的博客轉發插件(跨域)

2019-11-17 02:05:42
字體:
來源:轉載
供稿:網友

開發自己的博客轉發插件(跨域)

接著上一篇的《博客備份小工具3》我有提到“其實想了想,轉發博客干嘛非要在本地客戶端轉發,直接在博客園的頁面用js不就可以達到目的么。想是這么想,還沒嘗試。等我寫完了這個博客就去試試。。”。想法很天真,現實很殘忍。本以為,直接Ajax異步post請求就可以把當前頁面的內容發布??墒?,問題來了。我們瀏覽的頁面域名是VEVb.com,而我們后臺發布的域名是i.VEVb.com??缬蛄耍H。問題既然來了,總不能半途而廢吧。程序的世界沒有辦不到,只有想不到。jsonp專門來干這事的。(jsonp資料傳送門)。 為什么不用《博客備份小工具3》,因為它是CS的。要是可以直接在瀏覽頁面有個按鈕一鍵轉發豈不是爽歪歪。貌似Chrome插件可以專門來干這等壞事。(chrome插件介紹傳送門)。好了就這兩個重要的點了。

下面來說說主要的實現思路,首先通過插件在瀏覽頁面給自己找塊地盤(添加一個div)。然后div中可以輸入用戶名、密碼登錄,取得文章類型。接著就一鍵發布,把當前頁面的內容通過jsonp跨域傳到自己開發的后臺發布~是不是很簡單呢?哈哈,其實我覺得挺難的。中間遇到了很多問題。就現在,估計還有很多的bug。

好了,先看看效果圖。感覺爽嗎?要是當心安全問題,下面我會把所有源碼開放。大伙可以改進。^_^

一、開辟一片空間

插件content_script中配置的content_script.js,在content_script.js中可以直接操作當前瀏覽頁。哈哈,這還了得,這豈不是到哪里都隨心所欲了。好吧,那么我們給自己開辟一片空間來做想要的操作。

    var mydata = "";    mydata += "&url=" + document.location.href;    mydata += "&type=mytype";    mydata += "&tag=mytag";    var html = " <div id='chrome_test_div' style='display:none;background-color:#0094ff; position: fixed; top: 0px; left: 0px; width: 100%;z-index:11'>/        <table style='width:100%'>/            <tr>/                <td>用戶名:</td>/                <td><input id='chrome_test_user' type='text' value='' /></td>/                <td>密碼:</td>/                <td><input id='chrome_test_pass' type='passWord' value='' /></td>/                <td>/                    <a href='javascript:void(0);' id='chrome_test_a' >/登錄/</a>/</td>/<td>/文章:/</td>/<td>/<span id='chrome_content_title'></span>/</td>//<td>個人分類:</td>/<td>/    <select id='pop_sel_type_text'></select>/</td>//<td>/    Tag標簽:/                </td>/                <td>/                    <input type='text' value='' list='pop_sel_tag_text' id='id_pop_sel_tag_text'>/                    <input type='hidden' id='myhidden' />/                    <!--<datalist id='pop_sel_tag_text'></datalist>-->/                </td>/                <td colspan='2'><input type='button' id='chrome_test_button' value='一鍵轉發'  /></td>/                <td  id='chrome_meg_td'></td>/            </tr>/        </table>/        <script src='https://git.oschina.net/zhaopeiym/Demo/raw/master/resource/VEVb/cnblog.Chrome.js?v=123'></script>/    </div>";    $("body").PRepend(html).CSS("margin-top", "70px");    $("#chrome_content_title").text($("#cb_post_title_url").text());    document.body.scrollTop = 30;    window.onscroll = function () {        if (true) {            var top = document.body.scrollTop;            if (top <= 0) {                $("#chrome_test_div").slideDown(200);            }            else if (top >= 30) {                $("#chrome_test_div").slideUp(400);            }        }    }

直接添加一個div,然后在div中添加一個table。畫上登錄要的用戶名、密碼、文章標題、后臺發布的文章類型、tag標簽、、、等。

二、登錄 獲取 你所有的文章分類。

1、用jsonp發送請求

不知道同學們有沒有注意到上面的代碼中有一段

<script src='https://git.oschina.net/zhaopeiym/Demo/raw/master/resource/VEVb/cnblog.Chrome.js?v=123'></script>是的,我所以當前操作頁的js都在這個路徑下。

function chrome_test_login() {    var username = $("#chrome_test_user").val();    var password = $("#chrome_test_pass").val();    var Section_url = "&username=" + username + "&password=" + password;    $.getJSON(getjsonUrl + '/BolghelpWeb/Handler1.ashx?OperationCMD=login' + Section_url + '&callback=?', function (data) {        test(data);    });}

登錄的js。ajax的jsonp使用起來還是蠻方便的。

2、后臺代碼的登錄和取文章分類

登錄:

 /// <summary> /// 登錄 /// </summary> /// <param name="context"></param> public void PostLogin(HttpContext context, string username, string password) {     username = context.Request.QueryString["username"];     password = context.Request.QueryString["password"];     string loginurl = "http://passport.VEVb.com/login.aspx?ReturnUrl=http://www.49028c.com/";//     string result = htmlWeb.Load(loginurl).DocumentNode.InnerHtml;     String __EVENTVALIDATION = new Regex("id=/"__EVENTVALIDATION/" value=/"(.*?)/"").Match(result).Groups[1].Value;     String __VIEWSTATE = new Regex("id=/"__VIEWSTATE/" value=/"(.*?)/"").Match(result).Groups[1].Value;     String LBD_VCID_c_login_logincaptcha = new Regex("id=/"LBD_VCID_c_login_logincaptcha/" value=/"(.*?)/"").Match(result).Groups[1].Value;     StringBuilder str_content = new StringBuilder();     str_content.Append(@"__EVENTTARGET=");     str_content.Append(@"&__EVENTARGUMENT=");     str_content.Append(@"&__VIEWSTATE=" + System.Web.HttpUtility.UrlEncode(__VIEWSTATE, Encoding.UTF8));     str_content.Append(@"&__VIEWSTATEGENERATOR=C2EE9ABB");     str_content.Append(@"&__EVENTVALIDATION=" + System.Web.HttpUtility.UrlEncode(__EVENTVALIDATION, Encoding.UTF8));     str_content.Append(@"&tbUserName=" + System.Web.HttpUtility.UrlEncode(username, Encoding.UTF8));     str_content.Append(@"&tbPassword=" + password);     str_content.Append(@"&LBD_VCID_c_login_logincaptcha=" + LBD_VCID_c_login_logincaptcha);     str_content.Append(@"&LBD_BackWorkaround_c_login_logincaptcha=");     str_content.Append(@"&btnLogin=登  錄");     str_content.Append(@"&txtReturnUrl=http://www.49028c.com/");     httphelp.PostHtml(loginurl, null, str_content.ToString(), Encoding.UTF8, true); }

取文章分類:

/// <summary>/// 取文章類型/// </summary>/// <param name="context"></param>public void PostGetType(HttpContext context){    PostLogin(context, "", "");    string TypeUrl = "http://i.VEVb.com/EditArticles.aspx?opt=1";//地址                                    var typeHtml = httphelp.PostHtml(TypeUrl, null, "", Encoding.UTF8, true);    HtmlAgilityPack.HtmlDocument response = new HtmlDocument();    response.LoaDHTML(typeHtml);    var html_trS = response.DocumentNode.SelectNodes("http://*[@id='Editor_Edit_APOptions_Advancedpanel1_cklCategories']/tr");    List<object> objs = new List<object>();    foreach (var item in html_trS)    {        var html_tdS = item.SelectNodes(item.XPath + "/td");        foreach (var item_td in html_tdS)        {            if (item_td.SelectSingleNode(item_td.XPath + "/input") != null)            {                var value = item_td.SelectSingleNode(item_td.XPath + "/input").Attributes["value"].Value;                var name = item_td.SelectSingleNode(item_td.XPath + "/input").Attributes["name"].Value;                var text = item_td.SelectSingleNode(item_td.XPath + "/label").InnerText;                objs.Add(new { value = value, text = text, name = name });            }        }    }    context.Response.ContentType = "application/json";    string callback = context.Request.QueryString["callback"];    context.Response.Write(callback + "(" + objs.ToJson() + ")");}

ok,在此就登錄,并取到了所有的文章類型。

三、一鍵發布

其實在發布之前又登錄的一次。為什么呢?因為發布需要登錄,之前登錄的是上一次請求。而上一次請求的session,在這一個是讀不到的。可能是因為跨域請求的原因。那沒辦法的,那就再登錄一次吧。反正登錄的反法已經獨立出來了。只是電腦多干事了。

1、首頁在前臺頁面取得要轉發的正文內容

//一鍵轉發$("#chrome_test_button").click(function () {    $("#chrome_meg_td").html("");    var type = $("#pop_sel_type_text").val().split('%')[0];    var name = $("#pop_sel_type_text").val().split('%')[1];    var username = $("#chrome_test_user").val();    var password = $("#chrome_test_pass").val();    var tag = $("#id_pop_sel_tag_text").val();    var Section_url = "&type=" + type + "&tag=" + tag + "&name=" + name + "&password=" + password + "&username=" + username;    $.getJSON(getjsonUrl + '/BolghelpWeb/Handler1.ashx?OperationCMD=Publishing&callback=?' + Section_url + '&url=' + document.location.href, function (data) {        $("#chrome_meg_td").html("發布成功~<a   target='_blank'>后臺查看~</a>");        $("#chrome_test_div a").css("color", "#fff");    });});

2、然后是后臺發布

 /// <summary> /// 發布 /// </summary>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩电影大全免费观看2023年上| 亚洲国产精品专区久久| 国产精品日日摸夜夜添夜夜av| 亚洲精品欧美一区二区三区| 国产suv精品一区二区三区88区| 国产一区香蕉久久| 色七七影院综合| 国产精品第3页| 欧美在线日韩在线| 国产69精品久久久| 欧美最猛性xxxxx免费| 欧美视频在线视频| 久久精品国产亚洲精品| 国产精品一区二区三| 成人欧美一区二区三区在线| 日韩美女激情视频| 国产精品老女人精品视频| 国产精品香蕉在线观看| 亚洲美腿欧美激情另类| 91亚洲精品一区| 欧美大片免费观看在线观看网站推荐| 欧美国产日韩xxxxx| 久久久999精品| 中文字幕精品在线| 国产精品九九九| 清纯唯美亚洲激情| 亚洲成人久久久久| 久久艳片www.17c.com| 国产在线拍偷自揄拍精品| 欧美激情一区二区三级高清视频| 国产精品小说在线| 午夜精品一区二区三区在线播放| 91po在线观看91精品国产性色| 国产精品久久91| 深夜福利国产精品| 日韩av在线网| 日韩免费高清在线观看| 亚洲国产精品成人va在线观看| 国产自产女人91一区在线观看| 欧美放荡办公室videos4k| xvideos亚洲| 色青青草原桃花久久综合| 欧美三级免费观看| 57pao精品| 伊人久久久久久久久久久久久| 日韩在线播放av| 欧美色图在线视频| 欧美二区在线播放| 欧美亚洲国产视频小说| 欧美成人精品h版在线观看| 91亚洲精品久久久久久久久久久久| 欧美国产日韩一区二区三区| 国产精品视频成人| 国产丝袜视频一区| 色噜噜狠狠狠综合曰曰曰88av| 亚洲一区二区精品| 亚洲男人天堂手机在线| 国产精品91在线观看| 久久久免费观看视频| 欧美在线中文字幕| 2019中文字幕在线免费观看| 亚洲精品av在线| 国产精品久久久久久久7电影| 2018日韩中文字幕| 欧美性猛交xxxx乱大交蜜桃| 欧美在线xxx| 国产精品视频在线观看| 日韩中文字幕在线播放| 亚洲人成电影网站色| 91精品国产乱码久久久久久蜜臀| 日韩高清不卡av| 欧美大片免费观看| 欧美一区二三区| 国产精品免费在线免费| 欧美精品日韩三级| 国产一区二区三区久久精品| 亚洲日本中文字幕免费在线不卡| 亚洲一级黄色片| 久久久国产一区| 欧美一级淫片丝袜脚交| 亚洲黄色www网站| 日韩亚洲欧美中文高清在线| 久久久久久国产免费| 亚洲精品久久久久| 欧美第一淫aaasss性| 欧美一区亚洲一区| 性色av一区二区三区红粉影视| 成人黄色网免费| 精品久久中文字幕| 亚洲视频网站在线观看| 日本一区二区在线免费播放| 亚洲在线免费视频| 欧美视频在线免费看| 国产精品视频一区二区高潮| 亚洲成人精品在线| 日韩亚洲第一页| 国产丝袜一区二区三区免费视频| 久久夜色精品国产| 97人人做人人爱| 成人激情视频免费在线| 久久久999精品免费| 精品中文字幕乱| 日韩二区三区在线| 欧美日韩综合视频| 欧美日韩国产精品一区二区三区四区| 久久亚洲电影天堂| 亚洲欧美综合区自拍另类| 影音先锋欧美精品| 国产精品流白浆视频| 欧美精品免费在线观看| 亚洲毛片在线免费观看| 66m—66摸成人免费视频| 亚洲国产高潮在线观看| 中文字幕欧美精品在线| 热99精品只有里视频精品| 精品色蜜蜜精品视频在线观看| 亚洲综合中文字幕在线| 日韩欧美中文第一页| 成人黄色影片在线| 久久免费观看视频| 国产成人精品在线观看| 中文字幕日韩高清| 欧美精品日韩www.p站| 91久久综合亚洲鲁鲁五月天| 日韩一区av在线| 亚洲人精品午夜在线观看| 久久久久一本一区二区青青蜜月| 久久国产精品久久久久久久久久| 亚洲福利视频网| 91热精品视频| 成人性生交大片免费观看嘿嘿视频| 亚洲欧美日韩国产中文| 亚洲欧美中文日韩v在线观看| 色综合影院在线| 深夜福利亚洲导航| 亚洲成色999久久网站| 日韩成人在线网站| 欧美大片免费观看在线观看网站推荐| 久久久久久久久久久国产| 国产精品久久久久久久久借妻| 国产区精品在线观看| 亚洲激情第一页| 精品视频久久久| 精品国模在线视频| 国产精品久在线观看| 亚洲精品欧美日韩专区| 日韩av在线免费播放| 日韩av电影中文字幕| 亚洲性av在线| 欧美成人精品在线视频| 色综合久综合久久综合久鬼88| 亚洲欧洲免费视频| xxx欧美精品| 亚洲午夜国产成人av电影男同| 久久av红桃一区二区小说| 日韩精品中文字幕在线观看| 久久人人看视频| 国产精品在线看| 亚洲第一色在线| 欧美性理论片在线观看片免费| 久久中文字幕在线视频| 高潮白浆女日韩av免费看| 久久国产一区二区三区| 日本午夜精品理论片a级appf发布|