整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          按鍵精靈的Html系列命令使用技巧講的如此精魄


          豬腳本(原飛豬腳本)以按鍵精靈教學為主,涉及UiBot,Python,Lua等腳本編程語言,教學包括全自動辦公腳本,游戲輔助腳本,引流腳本,網頁腳本,安卓腳本,IOS腳本,注冊腳本,點贊腳本,閱讀腳本以及網賺腳本等各個領域。想學習按鍵精靈的朋友可以添加金豬腳本粉絲交流群:554127455 學習路上不再孤單,金豬腳本伴你一同成長.

          1.什么是網頁元素特征字符串?

          請參考網頁特征字符串詳解;

          2.Html系列命令

          2.1.HtmlSelect命令

          1)HtmlSelect命令只能夠根據Select項的值來進行選擇,注意這里不是顯示在Select項上的文字,而是該項的value。

          一個典型的下拉框HTML代碼如下:

          <select name="city">

          <option value="1">北京</option>

          <option value="2">上海</option>

          <option value="3">廣州</option>

          </select>

          這里如果要選擇上海,需要選擇值為2的項;

          2)級聯的下拉列表組合。

          在有的網頁中,會有幾個級聯的下拉列表,后一個下拉框會隨前一個框的值變化而發生變化,典型的有注冊頁面上的省份城市選擇,HtmlSelect命令能夠觸發Onchange事件,會導致后一個下拉框值發生變化,但是如果執行腳本太快,而導致后一個未能選中正確的值,可以在前一個HtmlSelect后加上適當的延時;

          3)多選表單中的列表控件;有的列表支持多選,在有一些個求職網站中,職業是可以多選的,這時候可以用%將多個需要選擇的值連接起來傳遞給HtmlSelect命令實現多選;

          2.2.HtmlExists命令

          HtmlExists命令,能夠判斷指定特征的元素是否存在,并能夠返回具備該特征的元素的個數。這個命令能夠用來判斷某個元素是否存在,如果為0證明不存在;

          2.3.HtmlGet命令

          HtmlGet命令比較復雜,但是功能也非常強大,該命令具備兩個參數,第一個參數為獲取類型,目前支持的值如下所示:

          序號 值 適用對象

          1 text 得到指定元素的文本值,對應DOM屬性innerText

          2 html 得到指定元素內部的HTML代碼,對應DOM屬性innerHTML

          3 outerHtml 得到元素整體的HTML代碼,對應DOM屬性的outerHTML

          4 value 得到元素的Value值,用于獲取表單元素內部的值

          5 src 得到圖像元素的src屬性,用于IMG標簽對象

          6 href 得到鏈接元素的鏈接地址,用于A標簽

          7 …其他名稱 其他屬性,如果您使用的是合法的屬性名稱,就能夠返回對應的值。如何才是合法的屬性?請參閱HTML標準。

          第二個參數為特征字符串,如果匹配多個,只能返回第一個元素的值;

          例如,獲得淘寶貨物價格:

          Plugin price=Web.HtmlGet("text","id:id_Price")

          獲取某個表單文本的值

          Plugin email=Web.HtmlGet("value","name:Email")

          2.4.RunJS命令

          RunJS命令提供了直接運行Javascript的功能,如果您對JS非常熟悉,就能夠極大的擴展WQM的功能。

          RunJS命令支持兩中執行方式,第一個參數設置為0時,能夠執行一段沒有返回值的Javascript,

          例如:

          RunJS(0,"alert('hello');")

          第一個參數設置為1時,能執行一段js并返回由return語句返回的值,返回值為字符串類型;

          例如:返回Html文檔的title;

          RunJS(1,"var t=document.title;return t;")

          如果您分析到網頁中某個按鈕實際上就是執行了一個函數,例如

          <input type="Button" … />

          您就可以直接調用

          RunJS(0,"dosomething();")

          JQuery的支持,網頁按鍵精靈集成了Jquery1.3.2,為了不與其他JQ的庫發生沖突,使用了wqmjq來代替$操作符,如果您需要直接使用JQ來操作網頁,可使用wqmjq來執行Jquery語句:

          eb組態,開發儀表組件echarts。



          首先我們登陸系統就會看到新增的組件管理選項 如下圖:


          點擊添加組件選擇2D組件我們就可以建立一個自己的組件了


          《組件設計器》由 基礎設置(包括名稱 code 類型 狀態 icon 次序號 )HTML編輯區域 CSS編輯區域 JS編輯區域 和預覽區域組成。

          首先我們給組件 起一個‘名字’ 和 ‘code’,在url輸入框中可以給組件設置一個icon。點擊保存系統會為我們建立一個組件模板。

          由于web組態是由vue開發的所以開發組件也需要vue的的基礎知識。建議去看下vue的教程及生命周期,以方便開發組件。以下我附上組件代碼。

          我們就開始設計一個炫酷的按鈕作為例子

          HTML代碼如下:

          <a href="#" class="btn123" :style="imrstyle" v-show="controlProp.commProp.visible">{{controlProp.textProp.text}}</a>

          這里:

          style="imrstyle":樣式 在web組態設計器中呈現的樣式

          v-show="controlProp.commProp.visible":可見性 在web組態設計器中可實現顯示或閃爍

          {{controlProp.textProp.text}}:文本 對應組件的文本屬性

          更多屬性請參考:http://krmes.com:8000/md/design/#%E7%BB%84%E4%BB%B6%E5%9F%BA%E7%A1%80%E5%B1%9E%E6%80%A7

          JS代碼如下:

          export default {
            props: {
              controlProp: Object,
              controlImports: Object,
              previewId: String // 頁面容器的id,若控件在頁面容器中 用來區分生成canvas的元素
            },
            data() {
              return {
                myCharts: null,
              }
            },
            mounted() {
              let echarts = this.controlImports['echarts']
          
              // 基于準備好的dom,初始化echarts實例
              let box
              if (this.previewId) {
                box = $('.' + this.previewId + ' #' + this.controlProp.commProp.id)[0]
              } else {
                box = $('#' + this.controlProp.commProp.id)[0]
              }
              this.myCharts = echarts.init(box)
              this.initCharts()
            },
            computed: {
              imrstyle: function () {
                return {
                  position: 'absolute',
                  width: this.controlProp.commProp.width + 'px',
                  height: this.controlProp.commProp.height + 'px',
                  // left: this.controlProp.commProp.x + 'px',
                  // top: this.controlProp.commProp.y + 'px',
                  'background-color': this.controlProp.commProp.backgroundColor,
                  'border': this.controlProp.commProp.borderwidth + 'px ' + this.controlProp.commProp.borderstyle + ' ' + this.controlProp.commProp.bordercolor,
                  'animation': this.controlProp.commProp.isFlash ? 'myfirst 1s infinite' : '',
                  '-webkit-animation': this.controlProp.commProp.isFlash ? 'myfirst 1s infinite' : '',
                  'transform': 'rotate(' + this.controlProp.commProp.angle + 'deg)',
                  'box-shadow': this.controlProp.spProp.isShowShadow ? '10px 0px 10px rgba(0,0,0,0.9)' : 'none'
                }
              }
            },
            watch: {
              'controlProp.commProp.width': {
                handler: function () {
                  this.myCharts.resize()
                }
              },
              'controlProp.commProp.height': {
                handler: function () {
                  this.myCharts.resize()
                }
              },
              'controlProp.spProp.echartsOption'(val) {
                this.initCharts()
              },
              'controlProp.spProp.value'(val) {
                this.setValue()
              },
              'controlProp.spProp.name'(val) {
                this.setValue()
              },
              'controlProp.spProp.max'(val) {
                this.setValue()
              },
            },
            created() {
              console.log('echarts')
              this.controlProp.spProp.update = this.update
            },
            methods: {
              initCharts() {
                //準備數據
                let category = [{
                  name: this.controlProp.spProp.name,
                  value: this.controlProp.spProp.value
                }];
                let total = this.controlProp.spProp.max; //數據總數
                let datas = [];
                category.forEach(value => {
                  datas.push(value.value);
                });
                // 使用剛指定的配置項和數據顯示圖表。
                let option = eval('(' + this.controlProp.spProp.echartsOption + ')')
                option.xAxis.max = total
                option.yAxis.data = category
                option.series[0].data = category
                option.series[1].data = [total, total, total, total]
                option.series[1].symbolBoundingData = total
                option.series[2].data = datas
                option.series[2].label.normal.formatter = category[0].value + '%'
                option.series[2].symbolBoundingData = total
                option.series[3].data = [total, total, total, total]
                option.series[4].data = [total, total, total, total]
                this.myCharts.setOption(option, true);
              },
              setValue() {
                //準備數據
                let category = [{
                  name: this.controlProp.spProp.name,
                  value: this.controlProp.spProp.value
                }];
                let total = this.controlProp.spProp.max; //數據總數
                let datas = [];
                category.forEach(value => {
                  datas.push(value.value);
                });
          
                // 使用剛指定的配置項和數據顯示圖表。
                let option = eval('(' + this.controlProp.spProp.echartsOption + ')')
                option.xAxis.max = total
                option.yAxis.data = category
                option.series[0].data = category
                option.series[1].data = [total, total, total, total]
                option.series[1].symbolBoundingData = total
                option.series[2].data = datas
                option.series[2].label.normal.formatter = category[0].value + '%'
                option.series[2].symbolBoundingData = total
                option.series[3].data = [total, total, total, total]
                option.series[4].data = [total, total, total, total]
                //更新echarts
                this.myCharts.setOption(option);
              },
              update() {
                this.initCharts()
              },
              initImports() {
                return {
                  'echarts': 'echarts'
                }
              },
              initProp() {
                return {
                  commProp: { // 基礎屬性
                    width: 600,
                    height: 60
                  },
                  textProp: {
                    padding: 0,
                    margin: 0
                  },
                  spProp: { // 特殊屬性
                    name: '進度',
                    value: 80,
                    max:100,
                    echartsOption: `{
                        xAxis: {
                            max: total,
                            splitLine: {
                                show: false
                            },
                            axisLine: {
                                show: false
                            },
                            axisLabel: {
                                show: false
                            },
                            axisTick: {
                                show: false
                            }
                        },
                        grid: {
                            left: 50,
                            top: 0, //設置條形圖的邊距
                            right: 50,
                            bottom: 0
                        },
                        yAxis: [{
                            type: "category",
                            inverse: false,
                            data: category,
                            axisLine: {
                                show: false
                            },
                            axisTick: {
                                show: false
                            },
                            axisLabel: {
                                show: false
                            }
                        }],
                        series: [{
                                //內
                                type: "bar",
                                barWidth: 28,
          
                                legendHoverLink: false,
                                silent: true,
                                itemStyle: {
                                    color: {
                                        type: "linear",
                                        x: 0,
                                        y: 0,
                                        x2: 1,
                                        y2: 0,
                                        colorStops: [{
                                                offset: 0,
                                                color: "#0097ff" // 0% 處的顏色
                                            },
                                            {
                                                offset: 0.4,
                                                color: "#6dffe1" // 100% 處的顏色
                                            },
                                            {
                                                offset: 0.8,
                                                color: "#9d6fff" // 100% 處的顏色
                                            }
                                        ]
                                    }
                                },
                                label: {
                                    normal: {
                                        show: true,
                                        position: "left",
                                        formatter: "{b}",
                                        offset: [0, 2], //設置右邊數據位置
                                        textStyle: {
                                            color: "#0097ff",
                                            fontSize: 14,
                                            fontWeight: 600
                                        }
                                    }
                                },
                                data: category,
                                z: 1,
                                animationEasing: "elasticOut"
                            },
                            {
                                // 分隔
                                type: "pictorialBar",
                                itemStyle: {
                                    normal: {
                                        color: "#07314a"
                                    }
                                },
                                symbolRepeat: "fixed",
                                symbolMargin: 2,
                                symbol: "rect",
                                symbolClip: true,
                                symbolSize: [3, 28],
                                symbolPosition: "start",
                                symbolOffset: [3, -4],
                                symbolBoundingData: total,
                                data: [total, total, total, total],
                                z: 2,
                                animationEasing: "elasticOut",
                            },
                            {
                                //外邊框
                                type: "pictorialBar",
                                symbol: "rect",
                                symbolBoundingData: total,
                                itemStyle: {
                                    normal: {
                                        color: "none"
                                    }
                                },
                                label: {
                                    normal: {
                                        formatter: "80"+"%",
                                        show: true,
                                        position: "right",
                                        offset: [5, -3], //設置右邊數據位置
                                        textStyle: {
                                            color: "#0097ff",
                                            fontSize: 14,
                                            fontWeight: 600
                                        }
                                    }
                                },
                                data: datas,
                                z: 0,
                                animationEasing: "elasticOut"
                            },
                            {
                                name: "外框",
                                type: "bar",
                                barGap: "-130%", // 設置外框粗細
                                data: [total, total, total, total],
                                barWidth: 45,
                                itemStyle: {
                                    normal: {
                                        barBorderRadius: [5, 5, 5, 5],
                                        color: "#07314a", // 填充色
                                        barBorderColor: "#1588D1", // 邊框色
                                        barBorderWidth: 3, // 邊框寬度
                                    }
                                },
                                z: 0
                            },
                            {
                                type: 'scatter',
                                name: '條形',
                                symbol: 'roundRect',
                                symbolSize: [7,20],
                                symbolOffset: [3, -5],
                                symbolKeepAspect: true,
                                itemStyle: {
                                    normal: {
                                        color: "#1588D1"
                                    }
                                },
                                data: [total, total, total, total],
                            }
                        ]
                    }`,
                    update: null
                  },
                  spPropSetting: [ // 特殊屬性
                    { label: '名稱', type: 'textinput', group: '特殊', valuename: 'name' },
                    { label: '數值', type: 'numberinput', group: '特殊', valuename: 'value' },
                    { label: '最大值', type: 'numberinput', group: '特殊', valuename: 'max' },
                  ]
                }
              }
            }
          }

          這里需要注意:

          initProp():方法中實現對組件的 基礎屬性 文本屬性 特殊屬性的初始化配置

          watch:中監聽'controlProp.spProp.value'屬性,這樣就可以使用web組態中的變量綁定功能,實現實時顯示數值。

          更多屬性配置參考:http://krmes.com:8000/md/design/#%E7%BB%84%E4%BB%B6%E5%9F%BA%E7%A1%80%E5%B1%9E%E6%80%A7

          點擊保存這樣我們設計的組件就顯示出來了!是不是很簡單。



          這樣在我們的web組態中就可以使用我們自定義的儀表盤組件了!

          4.3 選擇框腳本


          ?選擇框在HTML中的一般形式:

          <select name="location" id="selLocation">
              <option value="Sunnyvalue,CA">Sunnyvalue</option>
              <option value="Los Angeles,CA">Los Angeles</option>
              <option value="Mountain View,CA">Mountain View</option>
              <option value="">China</option>
              <option>Australia</option>
          </select>

          select的value有以下幾種情況:

          • 如果沒有選中選項,則value為空字符串;
          • 如果選中了一項,則value為該option的value;
          • 如果選中了一項,但該option沒有value,則select的value為option的text;
          • 如果選中多項,則value為第一個選中項的值。

          每一個option都有以下的屬性:

          • index:當前項在options集合中的索引
          • label:當前選項的標簽
          • selected:布爾值,當前項是否被選中
          • text:選項的文本
          • value:選項的值

          通過以下方式訪問:

          var text = select.options[0].text;
          var value = select.options[0].value;
          var index = select.options[0].index;
          var label = select.options[0].label;
          var selected = select.options[0].selected;

          select的change事件與其他的不一樣,只要選中了選項就會觸發。其他控件的change事件是在值被修改且焦點離開當前字段時才會觸發。

          14.3.1 選擇選項

          通過selectedIndex可以獲得選中項的序號index,通過下面代碼可以得到被選中項的text:

          var select = document.getElementById("selLocation");
          var seleIndex = select.selectedIndex;              // 得到被選中option的序號
          var selectedOption = select.options[seleIndex];    // 通過序號來取得選中的項
          alert(selectedOption.text);   // 顯示選中項的文本

          也可以通過設置selectedIndex來使某個option被選中:

          select.selectedIndex = 1;

          還可以設置某個option的selected = true來表示某個選項被選中:

          select.options[1].selected = true;

          如果select是多選的,可以通過循環遍歷來確定哪些項被選中了:

          function getSelectedOptions(selectbox) {
              var result = new Array();
              var option = null;
          
              for (var i=0,len=selectbox.options.length;i<len;i++){
                  option = selectbox.options[i];
                  if (option.selected){
                      result.push(option);
                  }
              }
              return result;
          }

          14.3.2 添加選項

          var selectbox = document.getElementById("selLocation");
          // 創建元素
          var newOption = document.createElement("option");
          // 為元素文本的子節點
          newOption.appendChild(document.createTextNode("新增加的option"));
          newOption.setAttribute("value","newValue");
          // 將新的節點掛到select下面
          selectbox.appendChild(newOption);

          14.3.3 移除option

          可以使用以下方式移除某一項:

          selectbox.removeChild(selectbox.options[0]);
          selectbox.remove(0);
          selectbox.options[0] = null;

          在這里還編制了一個函數可以用來清除所有option:

          // 移除所有select的option項
          function clearSelectbox(selectbox) {
              var len = selectbox.options.length;
              for (i=len;i>0;i--){
                  selectbox.remove(i);
              }
          }

          14.3.4 移動和重排選項

          可以使用appendChild將option從一個select移動到另一個select下面。

          var selectbox1 = document.getElementById("selectbox1");
          var selectbox2 = document.getElementById("selectbox2");
          selectbox2.appendChild(selectbox1.options[1]);

          移動與移除option會重排index,使用insertBefore方法還能移動位置:

          var optionToMove = selectbox1.options[1];
          selectbox1.insertBefore(optionToMove,selectbox1.options[optionToMove.index-1]);

          14.4 表單序列化


          主站蜘蛛池模板: 国产在线一区观看| 日本免费电影一区二区| 中文字幕一区二区三区在线不卡 | 一区二区精品在线观看| 久久久久人妻一区二区三区vr| 国产精品熟女视频一区二区| 97一区二区三区四区久久| 色欲精品国产一区二区三区AV| 一区二区三区免费视频观看| 少妇一夜三次一区二区| 精品熟人妻一区二区三区四区不卡| 蜜桃传媒视频麻豆第一区| 国产一区二区精品久久凹凸| 日韩av片无码一区二区三区不卡 | 精品无码一区二区三区电影| 国产精品女同一区二区| 日本大香伊一区二区三区| 香蕉在线精品一区二区| 国产情侣一区二区三区 | 精品人妻AV一区二区三区| 无码囯产精品一区二区免费 | 国产一区美女视频| 日本无卡码免费一区二区三区| 无码人妻精品一区二区蜜桃| 色窝窝免费一区二区三区| 无码一区二区波多野结衣播放搜索| 中文字幕日韩一区二区不卡| 亚洲精品无码一区二区| 天堂va视频一区二区| 卡通动漫中文字幕第一区| 国产精品成人99一区无码| 一区二区三区在线视频播放| 日韩动漫av在线播放一区| 中文字幕在线观看一区| 国产主播一区二区| 久久综合亚洲色一区二区三区| 中文字幕日韩一区二区不卡| 国产在线一区二区三区av| 国产亚洲情侣一区二区无码AV| 国产无线乱码一区二三区| 亚洲区精品久久一区二区三区|