顯示具有 javascript 標籤的文章。 顯示所有文章
顯示具有 javascript 標籤的文章。 顯示所有文章

2020年8月10日 星期一

快速產生 Rclone 複製 google drive 資料夾指令

 最近開始使用傳說中無限容量的google 共用雲端硬碟,搭配上AutoRclone,近乎完美,唯一缺點是rclone的指令好煩阿,每次都要在那邊剪剪貼貼,才能產出一組能用的指令,煩~~~

於是有了以下的產生器,請把以下指令貼在chrome的書籤內容上,用chrome打開要複製的google drive資料夾,再點一下這個書籤就會產生出所需的指令囉

P.S 指令內容請依照自身需求修改,XXXXXXXX改為目的資料夾ID

let a="python3 rclone_sa_magic.py -s ";
let b=location.href.split("/");
b=b[b.length-1];
let c=" -d ";
let d='XXXXXXXXXXXXXXXXXXXXX';
let e=' -dp "';
let f='/'+document.getElementsByClassName('h-R-w-d-ff')[0].textContent+'" -b 1 -e 600';
let g=a+b+c+d+e+f;
console.log(g);
prompt('copy to cmd',g)

懶人版:

javascript:(function()%7Blet%20a%3D%22python3%20rclone_sa_magic.py%20-s%20%22%2Cb%3Dlocation.href.split(%22%2F%22)%3Bb%3Db%5Bb.length-1%5D%3Blet%20c%3D%22%20-d%20%22%2Cd%3D%22XXXXXXXXXXXXXXXX%22%2Ce%3D'%20-dp%20%22'%2Cf%3D%22%2F%22%2Bdocument.getElementsByClassName(%22h-R-w-d-ff%22)%5B0%5D.textContent%2B'%22%20-b%201%20-e%20600'%2Cg%3Da%2Bb%2Bc%2Bd%2Be%2Bf%3Bconsole.log(g)%2Cprompt(%22copy%20to%20cmd%22%2Cg)%7D)()




2018年5月11日 星期五

499之亂~武器支援~~~搶中華電信線上文字客服功能

寫了一段code幫忙搶中華電信線上文字客服的功能,只能用在https://123.cht.com.tw/CustomerService/Service?businessServiceId=Mobile

javascript:$('#phoneNumber').val('09xxxxxxxx');$('#submitChat').attr('disabled',false);$('#submitChat').click();

在進入文字客服前,會有認證碼的畫面,並且要填入自己的電話號碼,


  1. 把上面那段code,09xx的部分改為自己的電話號碼
  2. 在chrome書籤列新增網頁,填入上面的code,按下確定,書籤列會出現一個按鈕
  3. 手動輸入認證碼,按下剛剛新增的按鈕,資料直接送出,無視等待人數超過上限
  4. 重複步驟3直到進入等待畫面
這段程式碼的用途在,可以讓你一直送出交談要求,不用手動F5再填入這些資料



2017年9月6日 星期三

解決某些網站無法捲動的問題

最近很多網站會用蓋板式的廣告,我不想看都會用adblock plus把他過濾掉,可是有時候會造成網站無法捲動,把以下指令加入書籤列,無法捲動的網站按一下此書籤就可以捲動囉

javascript:$('html,body').css('overflow',"auto")

2016年5月16日 星期一

煩人的高鐵網站時刻表&行車時間計算機


因為高鐵現在班次很多又複雜,北高直達的班次又變少,每次要上高鐵網站查詢要搭哪班車,就得計算這班車到底要開多久,一怒之下寫了以下的程式碼,會自動計算行車時間,就是在以下這個畫面執行的時候會把那完全沒用的備註欄改為行車時間。

BTW,購票頁面有行車時間,這頁就沒有,看來(準備)付錢的就是老大阿...



使用方法
1.把 高鐵時間計算機 這串文字拉到我的最愛(Chrome or Firefox, IE管他去死)
2.查詢高鐵的時候按一下那個書籤,可愛的行車時間就跑出來了

以下是未經壓縮的原始碼

var i=1;
$('.column3').each(function(){
var date = $('#SearchDate').val();
var start = $('.column3:eq('+i+')').text();
var end = $('.column4:eq('+i+')').text();
var s_time = new Date(date + ' ' + start);
var e_time = new Date(date + ' ' + end);
var run_time = (e_time-s_time)/1000/60;
var last = run_time % 60;
var run_time_str = '';
if(last < 10){
last = '0'+last;
}
if( run_time <= 60){
run_time_str = '0:'+ last;
}else{
run_time_str = Math.floor(run_time/60) + ':' + last;
}
$('.column2:eq('+i+')').text(run_time_str);
$('.column2:eq(0)').text('行車時間');
i++;
});


某遊戲網頁領取獎勵語法

懶的手動領

button1: javascript:name=prompt("角色名稱","");$("#txtCharName").val(name);$("#RBServerList_7").attr("checked", true);$("#ibtnNext").click();

button2: javascript:$("#rdoBox20").attr("checked", true);$("#CheckBuy1").click();

2014年1月29日 星期三

使用jQuery的attr注意事項

這篇其實是寫給自己看的,最近在做一個階層式選單,所有資料都是使用ajax拿回來的,連第一層也是。所以頁面一打開,他會去讀第一層的資料,點第二層之後去拿第三層,點第三層去拿第四層....

但是為了避免資源浪費,所以拿過的資料不要重複拿,不要看的時候就把他隱藏起來,要看再打開讓他看,這時需要2個控制變數,一個判斷是否有拿過資料,一個判斷是否要打開或隱藏這個元素

所以我很自然的 取了 data, open 當做變數名稱放在html tag裡面使用,但是open在html5裡面居然是一個keyword,雖然使用$(this).attr('open', 'true')可以正確設置open='true',但是使用$(this).attr('open')取回值,他一律回open!!!!!!!

又不是歐噴醬,幹嘛一直回我歐噴!!!!!!
所以以後最好避免使用open當做tag的名稱...切記...

本次重點整理

  1. 要使用attr取得tag的內容,最好初始的html就有該tag名稱,不然他一律回undefined,直到你用attr設定了該tag的值
  2. html tag一律為字串,所以設定$(this).attr('data', true)跟$(this).attr('data', 'true')之後,取回內容一律為字串的true,建議一開始寫入就寫字串,比較不會混淆
  3. 千萬別用open當做tag名稱,不然他會變歐噴醬。
  4. 使用attr設定tag值為false時會使得該tag消失,下次想用attr取回時會回傳undefined,要非常注意,解決方式是設置字串的false就好

使用jQuery在表格中任一插入一列

最近再做一個表格,要能在表格中任意插入一列,google了幾個方法都是教你用eq(x),就能在某一行後面插入balabala...

阿我就是不知道要在哪行後面插入啊!!!!!,掯,這不是廢話嗎?

爆氣之後決定自己想辦法,以下就是source code。

要注意的是一般我們插入元件都會用append加到後面,但是append這個指令其實是會把要加入的內容放在該元素的最後面,而不是這個元素的後面。意思就是,新加入的內容還是算在該元素的頭上,不會自成一個元素。

在加入一般的元素或許沒什麼問題,但是要加入表格就會造成版面亂掉,
所以這邊加入要使用after或是before,這2個指令才會把加進去的內容放在原本的元素外面。


$(document).on('click', '.tr', function(){
    $(this).after("<tr class='tr'><td>data</td></tr>"); //要放在前面就把after換成before
});

2013年12月13日 星期五

jQuery實做輸入時清除input文字

以下程式碼可以完成 點擊input對話框時清除上面的文字,若沒輸入則還原


$(".box").focus(function(){ 
    $(this).addClass("focus"); 
    if($(this).val() ==this.defaultValue){   
        $(this).val("");            
    }  
}).blur(function(){ 
    $(this).removeClass("focus"); 
    if ($(this).val() == '') { 
        $(this).val(this.defaultValue); 
    } 
});

2013年11月1日 星期五

jQuery File Tree 只顯示 資料夾 與中文亂碼修正

        jQuery File Tree是一套滿好用的檔案樹套件,可以顯示遠端Server的檔案路徑。不過他目前只能選擇檔案,不能只選資料夾,而且若是中文檔名,取得的路徑還會是亂碼,以下做一點小修改,讓他支援中文檔名以及可以選取資料夾。

       首先,針對他的connector動手腳,以下是php的範例,不過各版本其實是相同原理

jqueryFileTree.php

foreach( $files as $file ) {
    if( file_exists($root . $_POST['dir'] . $file) && $file != '.' && $file != '..' && !is_dir($root . $_POST['dir'] . $file) ) {
    $ext = preg_replace('/^.*\./', '', $file);
    echo "<li class=\"file ext_$ext\"><a href=\"#\" rel=\"" . htmlentities($_POST['dir'] . $file) . "\">" . htmlentities($file) . "</a></li>";
    }
}
接下來修改
jQueryFileTree.js
先把所有escape換成encodeURIComponent,然後再把點擊資料夾的部分回傳資料以及加入CSS方便辨識


if(jQuery) (function($){
 
$.extend($.fn, {
fileTree: function(o, h) {
    // Defaults
    if( !o ) var o = {};
    if( o.root == undefined ) o.root = '/';
    if( o.script == undefined ) o.script = 'jqueryFileTree';
    if( o.folderEvent == undefined ) o.folderEvent = 'click';
    if( o.expandSpeed == undefined ) o.expandSpeed= 500;
    if( o.collapseSpeed == undefined ) o.collapseSpeed= 500;
    if( o.expandEasing == undefined ) o.expandEasing = null;
    if( o.collapseEasing == undefined ) o.collapseEasing = null;
    if( o.multiFolder == undefined ) o.multiFolder = true;
    if( o.loadMessage == undefined ) o.loadMessage = 'Loading...';
    
    $(this).each( function() {
        function showTree(c, t) {
            $(c).addClass('wait');
            $(".jqueryFileTree.start").remove();
            $.post(o.script, { dir: t }, function(data) {
                $(c).find('.start').html('');
                $(c).removeClass('wait').append(data);
                if( o.root == t ) $(c).find('UL:hidden').show(); else $(c).find('UL:hidden').slideDown({ duration: o.expandSpeed, easing: o.expandEasing });
                bindTree(c);
            });
        }
        
        function bindTree(t) {
            $(t).find('LI A').bind(o.folderEvent, function() {
                if( $(this).parent().hasClass('directory') ) {
                    if( $(this).parent().hasClass('collapsed') ) {
                        // Expand
                        if( !o.multiFolder ) {
                            $(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
                            $(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed');
                        }
                        $(this).parent().find('UL').remove(); // cleanup
                        showTree( $(this).parent(), encodeURIComponent($(this).attr('rel').match( /.*\// )) );
                        $(this).parent().removeClass('collapsed').addClass('expanded');
                        $("a").removeClass("hover"); // 移除所有hover class
                        $(this).addClass('hover');   // 現有資料夾加入hover class
                        h($(this).attr('rel'));      // 回傳路境
                    } else {
                        // Collapse
                        $(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
                        $(this).parent().removeClass('expanded').addClass('collapsed');
                    }
                } else {
                    h($(this).attr('rel'));
                }
                return false;
            });
            // Prevent A from triggering the # on non-click events
            if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').bind('click', function() { return false; });
        }
        // Loading message
        $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
        // Get the initial file list
        showTree( $(this), encodeURIComponent(o.root) );
    });
}
});
 
})(jQuery);

2013年10月4日 星期五

jQuery UI Dialog 按下 Enter 自動送出

WWWWWWWOOOOOOOOOOOOOOOOOWWWW

3年來第一篇技術文章 XD

jQuery的Dialog對於我這種UI白癡來說實在很好用,但是他沒有內建Dialog表單的熱鍵,所以沒有辦法按下Enter就自動送出表單,解決方法是利用focse mothod加入熱鍵檢察,並執行click指令


$( "#form" ).dialog({
    buttons: {
        "送出": function() {
            $.ajax({  // 新增帳號
                type: "POST",
                url: 'manager.php?a=add',
                data: { name:name.val() },
                dataType: "json",
                error: function(xhr) {
                    alert("ajax error");
                },
                success: function(response) {
                    if ( response.status){ //成功
                        $( "#form" ).dialog( "close" ); //關閉dialog                             }else { //失敗show錯誤訊息
                        updateTips( tips, response.code );
                    }
                }
            });
        },
        "取消": function() {
            $( this ).dialog( "close" );
        }
    },
    focus: function() {
        $(':input', this).unbind('keyup'); // 解除事件綁定 不然會重複送出
        $(':input', this).keyup(function(event) {
            if (event.keyCode == 13) { // 偵測到按Enter
                $(this).parent().parent().parent().find("button:first").click(); // 尋找送出按鈕 層級依照頁面設定測試
            }
        });
    }
});