由于学习JS的目的是服务爬取过程,所以书中javascript知识只是读了一遍,对于动手做东西的话肯定是不够的,不过至少有个印象了。下一步是学习一下PyQt5,这是用来给python做UI的,可以通过installer进行打包成exe文件。
对于整个学习笔记文档,我会找个地方将文档上传后再发布出来。
![be3481b150e5285e2aeec5ae9d0ee7a1.png](https://img-blog.csdnimg.cn/img_convert/be3481b150e5285e2aeec5ae9d0ee7a1.png)
完整的EventUtil对象
var EventUtil = { addHandler: function (element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } }, removeHandler: function (element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else if (element.detachEvent) { element.detachEvent("on" + type, handler); } else { element["on" + type] = null; } }, getEvent: function(event){ return event ? event : window.event; }, getTarget: function(event){ return event.target || event.srcElement; }, preventDefault: function(event){ if (event.preventDefault){ event.preventDefault(); } else { event.returnValue = false; } }, stopPropagation: function(event){ if (event.stopPropagation){ event.stopPropagation(); } else { event.cancelBubble = true; } }, getCharCode: function(event){ if (typeof event.charCode == "number"){ return event.charCode; } else { return event.keyCode; } }, getClipboardText:function (event) { var clipboardData = (event.clipboardData || window.clipboardData); return clipboardData.getData("text"); }, setClipboardText:function (event,value) { if (event.clipboardData){ return event.clipboardData.setData("text/plain",value); } else if (window.clipboardData){ return window.clipboardData.setData("text",value); } },};// 获取选中的optionfunction getSelectedOptions(selectbox) { var result = new Array(); var option = null; for (var i=0,len=selectbox.options.length;i0;i--){ selectbox.remove(i); }}// 对form进行序列化function serialize(form){ var parts = [], field = null, i, len, j, optLen, option, optValue; for (i=0, len=form.elements.length; i < len; i++){ field = form.elements[i]; switch(field.type){ case "select-one": case "select-multiple": if (field.name.length){ for (j=0, optLen = field.options.length; j < optLen; j++){ option = field.options[j]; if (option.selected){ optValue = ""; if (option.hasAttribute){ optValue = (option.hasAttribute("value") ? option.value : option.text); } else { optValue = (option.attributes["value"].specified ? option.value : option.text); } parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(optValue)); } } } break; case undefined: //字段集 case "file": //文件输入 case "submit": //提交按钮 case "reset": //重置按钮 case "button": //自定义按钮 break; case "radio": //单选按钮 case "checkbox": //复选框 if (!field.checked){ break; } /* 执行默认操作 */ default: //不包含没有名字的表单字段 if (field.name.length){ parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value)); } } } return parts.join("&");}