1. 程式人生 > >廣科--網頁Js指令碼

廣科--網頁Js指令碼

需求:我們在學校每學期都要完成教師教學評教,但是課程多,評教有點麻煩,我們能不能一鍵評教所有課程老師的評教呢?


答案肯定是有的。首先登陸你學校的教務系統,我學校的教務系統是正方教務系統。推薦使用Chrome瀏覽器,登陸到評教頁面,再按F12,顯示如下圖所示的頁面。


點中上圖的Console 控制檯,把下面的程式碼複製黏貼過去按回車。注意教師評教頁面是要等待30秒,才能點選儲存的,這是我學校系統為了防止非法的頻繁操作。所以要等待完30秒後,再按回車,好了你會發現頁面會自動完成選擇,並跳轉到最後一頁,此時你只需要按下提交,就完成了評教!

[javascript]
view plain copy print ?
  1.     var iframe = window.top.document.getElementById(‘iframeautoheight’);  
  2.     var ifdocument = iframe.contentWindow.document;   
  3.     var
     subLength = ifdocument.getElementById(“pjkc”).length - 1;  
  4.     ifdocument.getElementById(”TextBox1”).value = - 1; //去掉等待時間  
  5.       
  6.     function execution(){  
  7.     var iframe = window.top.document.getElementById(‘iframeautoheight’);  
  8.     var ifdocument = iframe.contentWindow.document;   
  9.     //網站提交後會自動跳轉下一課程  
  10.     var reg = /^DataGrid1__ctl\d+_JS1$/;     
  11.     var selections = ifdocument.getElementsByTagName(“select”);  
  12.     for(var i = 0 ; i< selections.length; i++){  
  13.         if(reg.test(selections[i].getAttribute(“id”))){  
  14.             selections[i].value = ”優秀”;  
  15.         }  
  16.      }  
  17.     ifdocument.getElementById(”Button1”).click();  
  18. }  
  19.       
  20.     execution();  
  21.     iframe.onload = function(){  
  22.         if(subLength – > 0){  
  23.             execution();  
  24.         }  
  25.           
  26.     }  
          var iframe = window.top.document.getElementById('iframeautoheight');
            var ifdocument = iframe.contentWindow.document; 
            var subLength = ifdocument.getElementById("pjkc").length - 1;
            ifdocument.getElementById("TextBox1").value = - 1; //去掉等待時間

            function execution(){
            var iframe = window.top.document.getElementById('iframeautoheight');
            var ifdocument = iframe.contentWindow.document; 
            //網站提交後會自動跳轉下一課程
            var reg = /^DataGrid1__ctl\d+_JS1$/;   
            var selections = ifdocument.getElementsByTagName("select");
            for(var i = 0 ; i< selections.length; i++){
                if(reg.test(selections[i].getAttribute("id"))){
                    selections[i].value = "優秀";
                }
             }
            ifdocument.getElementById("Button1").click();
        }

            execution();
            iframe.onload = function(){
                if(subLength -- > 0){
                    execution();
                }

            }

那我們來看看具體是怎麼實現的。


1.先說下思路:

把學校的教務系統裡的 評優select標籤的value 改成 “優秀”, 然後再觸發下面的儲存按鈕,因為教務系統點了儲存會自動跳轉到下一個老師的頁面,所以不用我們操心了,我們只需要寫好 修改評優select 標籤的方法,當 iframe一載入完成就觸發這個方法,當評教數到達最後一個的時候停止觸發。


2.具體操作細節:

F12大法,檢視你學校的評教頁面,如圖所示:


1)發現評教系統裡面的巢狀著一個iframe, 也就是說我們選擇的內容都是在 iframe裡面的。

所以我們要獲取這個 iframe 物件,因為要呼叫一個 onload 事件。


使用   var iframe = window.top.document.getElementById(‘iframeautoheight’); 

 獲取iframe物件, 其中window.top 就是最頂層的window 物件。


使用 var ifdocument = iframe.contentWindow.document;  

獲取 iframe的document物件,其中contentWindow就是獲取 iframe物件巢狀的 window物件。


使用 var subLength = ifdocument.getElementById(“pjkc”).length - 1; 

獲取課程的數目,執行到最後一門的時候不再迴圈下去。




2)有了iframe物件的document物件就很好搞了, 我們寫個方法 execution 實現選擇每個 下拉框的值,並點選儲存。 

獲取所有select :  ifdocument.getElementsByTagName(“select”);   

我們來看看下拉框的 ID:

 

可以看到 select 的 ID 是有規律的。我們可以寫個正則匹配:

var reg = /^DataGrid1__ctl\d+_JS1$/; 

 如果匹配成功,就把  該 select 的 value值修改成你需要的值。最後找到儲存按鈕的 ID:


呼叫點選方法就OK了。ifdocument.getElementById(“Button1”).click();


3)但是我發現我學校的系統每個課程評教都設定了30等待時間,然後經我研究,在原始碼裡搜尋 Button1關鍵字 發現如下:

原來它會判斷 x 若 x >0就會走定時方法,所以改掉 x 的值就好了,再搜尋var x發現:


 TextBox1它value 就是30,所以我們修改下它的value。

ifdocument.getElementById(“TextBox1”).value = - 1; 



可以看到getvalue()方法 當iframe 一載入完就賦予了 x 的值,所以首次修改了TextBox1 value也不起作用,定時任務已經開始了,所以說要等待30秒後才能在控制檯回車執行復制的程式碼。


4)最後呼叫一個 iframe物件的onload 事件,當系統自動跳轉到下一課程的時候, iframe就會重新載入 載入完後,onload事件就會觸發,然後就可以再次呼叫 execution方法啦。



是不是很簡單,如果有條件的話,不妨自己寫寫看~


需求:我們在學校每學期都要完成教師教學評教,但是課程多,評教有點麻煩,我們能不能一鍵評教所有課程老師的評教呢?


答案肯定是有的。首先登陸你學校的教務系統,我學校的教務系統是正方教務系統。推薦使用Chrome瀏覽器,登陸到評教頁面,再按F12,顯示如下圖所示的頁面。


點中上圖的Console 控制檯,把下面的程式碼複製黏貼過去按回車。注意教師評教頁面是要等待30秒,才能點選儲存的,這是我學校系統為了防止非法的頻繁操作。所以要等待完30秒後,再按回車,好了你會發現頁面會自動完成選擇,並跳轉到最後一頁,此時你只需要按下提交,就完成了評教!

[javascript] view plain copy print ?
  1.     var iframe = window.top.document.getElementById(‘iframeautoheight’);  
  2.     var ifdocument = iframe.contentWindow.document;   
  3.     var subLength = ifdocument.getElementById(“pjkc”).length - 1;  
  4.     ifdocument.getElementById(”TextBox1”).value = - 1; //去掉等待時間  
  5.       
  6.     function execution(){  
  7.     var iframe = window.top.document.getElementById(‘iframeautoheight’);  
  8.     var ifdocument = iframe.contentWindow.document;   
  9.     //網站提交後會自動跳轉下一課程  
  10.     var reg = /^DataGrid1__ctl\d+_JS1$/;     
  11.     var selections = ifdocument.getElementsByTagName(“select”);  
  12.     for(var i = 0 ; i< selections.length; i++){  
  13.         if(reg.test(selections[i].getAttribute(“id”))){  
  14.             selections[i].value = ”優秀”;  
  15.         }  
  16.      }  
  17.     ifdocument.getElementById(”Button1”).click();  
  18. }  
  19.       
  20.     execution();  
  21.     iframe.onload = function(){  
  22.         if(subLength – > 0){  
  23.             execution();  
  24.         }  
  25.           
  26.     }  
          var iframe = window.top.document.getElementById('iframeautoheight');
            var ifdocument = iframe.contentWindow.document; 
            var subLength = ifdocument.getElementById("pjkc").length - 1;
            ifdocument.getElementById("TextBox1").value = - 1; //去掉等待時間

            function execution(){
            var iframe = window.top.document.getElementById('iframeautoheight');
            var ifdocument = iframe.contentWindow.document; 
            //網站提交後會自動跳轉下一課程
            var reg = /^DataGrid1__ctl\d+_JS1$/;   
            var selections = ifdocument.getElementsByTagName("select");
            for(var i = 0 ; i< selections.length; i++){
                if(reg.test(selections[i].getAttribute("id"))){
                    selections[i].value = "優秀";
                }
             }
            ifdocument.getElementById("Button1").click();
        }

            execution();
            iframe.onload = function(){
                if(subLength -- > 0){
                    execution();
                }

            }

那我們來看看具體是怎麼實現的。


1.先說下思路:

把學校的教務系統裡的 評優select標籤的value 改成 “優秀”, 然後再觸發下面的儲存按鈕,因為教務系統點了儲存會自動跳轉到下一個老師的頁面,所以不用我們操心了,我們只需要寫好 修改評優select 標籤的方法,當 iframe一載入完成就觸發這個方法,當評教數到達最後一個的時候停止觸發。


2.具體操作細節:

F12大法,檢視你學校的評教頁面,如圖所示:


1)發現評教系統裡面的巢狀著一個iframe, 也就是說我們選擇的內容都是在 iframe裡面的。

所以我們要獲取這個 iframe 物件,因為要呼叫一個 onload 事件。


使用   var iframe = window.top.document.getElementById(‘iframeautoheight’); 

 獲取iframe物件, 其中window.top 就是最頂層的window 物件。


使用 var ifdocument = iframe.contentWindow.document;  

獲取 iframe的document物件,其中contentWindow就是獲取 iframe物件巢狀的 window物件。


使用 var subLength = ifdocument.getElementById(“pjkc”).length - 1; 

獲取課程的數目,執行到最後一門的時候不再迴圈下去。




2)有了iframe物件的document物件就很好搞了, 我們寫個方法 execution 實現選擇每個 下拉框的值,並點選儲存。 

獲取所有select :  ifdocument.getElementsByTagName(“select”);   

我們來看看下拉框的 ID:

 

可以看到 select 的 ID 是有規律的。我們可以寫個正則匹配:

var reg = /^DataGrid1__ctl\d+_JS1$/; 

 如果匹配成功,就把  該 select 的 value值修改成你需要的值。最後找到儲存按鈕的 ID:


呼叫點選方法就OK了。ifdocument.getElementById(“Button1”).click();


3)但是我發現我學校的系統每個課程評教都設定了30等待時間,然後經我研究,在原始碼裡搜尋 Button1關鍵字 發現如下:

原來它會判斷 x 若 x >0就會走定時方法,所以改掉 x 的值就好了,再搜尋var x發現:


 TextBox1它value 就是30,所以我們修改下它的value。

ifdocument.getElementById(“TextBox1”).value = - 1; 



可以看到getvalue()方法 當iframe 一載入完就賦予了 x 的值,所以首次修改了TextBox1 value也不起作用,定時任務已經開始了,所以說要等待30秒後才能在控制檯回車執行復制的程式碼。


4)最後呼叫一個 iframe物件的onload 事件,當系統自動跳轉到下一課程的時候, iframe就會重新載入 載入完後,onload事件就會觸發,然後就可以再次呼叫 execution方法啦。



是不是很簡單,如果有條件的話,不妨自己寫寫看~