
WEB前端
逍遥兮容与_二胖
这个作者很懒,什么都没留下…
展开
-
CSS3中字体@font-face的使用
第一步:从http://www.dafont.com/或者Google Web Fonts上下载特殊字体。以从http://www.dafont.com/上下载的Single Malta字体为例,下载single_malta.zip后解压,其中包含SingleMalta.ttf文件。第二步:根据下载的特殊字体,借助第三方工具(fontsquirrel,url为http://www.fontsq原创 2015-03-10 10:14:15 · 1373 阅读 · 0 评论 -
location对象
1.location对象的所有属性: location.href // 完整url location.protocol // 协议 location.host // 服务器名称+端口号 location.hostname // 服务器名称 location.port // 端口号 location.pathname // 目录或文件名 location.search // 查询字符串原创 2016-04-13 10:38:17 · 544 阅读 · 0 评论 -
JS模拟块级作用域
根据js的执行环境作用域和垃圾收集机制可知,js没有块级作用域。例如:for (var i = 0; i < 5; i++) {}alert(i); // 5在java等有块级作用域的语言中,变量i只能在for循环中使用,而在js中却依然可以在for循环结束后访问i,那么,如何解决这个问题呢? 答:用匿名的函数表达式立即执行 的方式来 模仿块级作用域 (function() { /原创 2016-03-28 16:10:59 · 719 阅读 · 0 评论 -
js clone对象的方法
function clone(obj){ var o; if(typeof obj == "object"){ if(obj === null){ o = null; }else{ if(obj instanceof Array){ o = []转载 2016-04-13 14:21:14 · 4106 阅读 · 0 评论 -
navigator对象及其应用
1.navigator对象的属性: navigator.appCodeName // 浏览器名称 大多都是Mozilla navigator.appName // 完整的浏览器名称 navigator.appVersion // 浏览器版本,一般不与实际的浏览器版本对应 navigator.cookieEnabled // 表示cookie是否启用 navigator.cpuClass /原创 2016-04-13 11:43:49 · 5968 阅读 · 0 评论 -
超时调用(setTimeout)和间歇调用(setInterval)
1.超时调用console.log(1);var timeouId = setTimeout('console.log(12)', 2000); // 不会阻塞,而是在多长时间后将此任务添加到任务队列,然后任务队列根据添加进来任务的先后顺序进行执行,故此处不一定是2s后执行。第一个参数可以是函数,也可以是字符串,此处尽量不要写字符串clearTimeout(timeouId); // 可能导致立原创 2016-04-11 10:24:20 · 1748 阅读 · 0 评论 -
BOM:窗口位置、页面视口大小、window.open
获取窗口位置:// 兼容所有浏览器的写法 var leftPos = (typeof window.screenLeft === "number") ? window.screenLeft : window.screenX; var topPos = (typeof window.screenTop === "number") ? window.screenTop : window.scre原创 2016-04-08 18:37:57 · 2254 阅读 · 0 评论 -
继承
1.原型链继承:function Super() { this.property = true; this.colors = ["red", "green"];}Super.prototype.getSuperValue = function() { return this.property;}function Sub() { this.property =原创 2016-03-22 14:26:30 · 410 阅读 · 0 评论 -
window.open在IE下ajax中的兼容性
问题:在ajax中window.open在IE下会弹出浏览器阻止窗口的问题,进而不再执行window.open打开新tab页的方法 解决方法: 在ajax方法之前加上:windowOpenHandler = window.open("/loading-tips.html"); // /loading-tips.html 为提示加载页面在ajax内部之前window.open的位置用下列方法替换原创 2016-07-14 18:04:50 · 721 阅读 · 0 评论 -
IE兼容性问题总结(项目中遇到的)
1.console.log 在IE6,7,8下不支持。在IE9下若不打开控制台,会出现代码阻断问题。(所以,当打开控制台后在IEbug消失,可能是由于console.log导致的)。 2. 当在debugger;的情况下,原本出现的bug消失了,说明是由于延迟(debugger;相当于)bug消失,此时,肯定是由于另一个地方的代码和此处的代码设置了类似的东西因冲突而导致了bug. 3. 遮挡OC原创 2016-07-07 16:57:26 · 1071 阅读 · 0 评论 -
修改chrome下保存用户名密码的默认字体
input:-webkit-autofill {-webkit-text-fill-color: #FFF;}原创 2016-06-23 16:42:37 · 803 阅读 · 0 评论 -
js检测是否为数组
通常,js检测是否为数组有如下几种方法(都存在一定缺陷): 方法一:用typeof判断,将会返回object(数组也是对象),但对于排除错误并没有什么帮助; 方法二:检测是否存在length属性或者一些数组方法(如slice()方法),这些检测机制并不健壮,因为没有任何理由确定一个非数组对象就不能具有同样名称的属性和方法; 方法三:使用instanceof进行检测,但是这种检查机制在某些IE浏原创 2015-11-23 10:45:13 · 1274 阅读 · 0 评论 -
鼠标多次任意点击元素,css的hover失效的解决办法
1.解决办法:改为js的mouseenter和mouseleave事件;2.原因:经定位,是鼠标多次任意点击元素时,进入到了mouseleave事件中(鼠标点击时是在元素上的,不应该进入mouseleave中),所以才导致了hover失效。3.代码:<!DOCTYPE html><html><head> <meta charset...原创 2018-11-05 13:24:26 · 1666 阅读 · 0 评论 -
js创建对象的7种模式 --来自js高级
js创建对象的方法:1.工厂模式;function createPerson(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { alert(this.name); }...原创 2018-12-29 17:16:41 · 386 阅读 · 0 评论 -
js继承-来自js高级
继承:组合继承(原型继承与借用构造函数):用构造函数实现对实例属性的继承,用原型链实现对原型属性和方法的继承function Super(name) {this.name = name;this.colors = ["yellow", "red"];}Super.prototype.sayName = function() {alert(this.name);}f...转载 2018-12-30 22:31:14 · 191 阅读 · 0 评论 -
浅拷贝和深拷贝
var obj={a:1,b:2,c:{d:1,e:[3,4,5]}};浅拷贝:复制的是对象的引用,而不是对象本身,新旧对象还是共享一块内存方法一:for infunction shadowCopy(obj) { var result = {}; for (var i in obj) { result[i] = obj[i]; } retu...原创 2019-01-07 15:45:42 · 232 阅读 · 0 评论 -
解析地址栏中的查询字符串参数,返回对象
1.code:function getQueryStrObject() { var search = location.search, qs = search.length > 0 ? search.substring(1) : "", items = qs.length ? qs.split("&") : [], resultArgs = {原创 2016-04-13 09:58:39 · 655 阅读 · 0 评论 -
解决requirejs某文件加载超时问题
1.加载超时问题: 原因:同一个页面里面可能有别的js文件,也引用了这个加载超时的文件(以后称为“此文件”),但是,这两个文件中因为此文件的路径写的不一致,例如:一个文件中写的是在requirejs配置文件中配置的此文件的key(“jquery-ui-timepicker-addon”),而另一个文件中写的是关于此文件的相对路径或者全路径(require([“/libs/jquery/jquery原创 2016-04-08 16:32:23 · 3790 阅读 · 0 评论 -
欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-09-03 13:06:06 · 286 阅读 · 0 评论 -
JavaScript技巧(三)续
1.避免使用eval: eval()函数可以将任意字符串当做一个JavaScript代码来执行。当需要讨论的代码是预先就编写好了(不是在动态运行时决定),时没有理由需要使用eval()。而如果代码是在运行时动态生成的,则也有其他更好的方法来代替eval()实现其功能。即:只需要用方括号将需要访问的动态属性括起来就行了:// 反模式:var property = "name";alert(eva原创 2015-09-08 23:03:02 · 380 阅读 · 0 评论 -
JavaScript基本技巧
1.尽量少用全局变量; 2.隐含全局变量与明确定义的全局变量区别:在于能否使用delete操作符撤销变量: 使用var创建的全局变量不能删除; 不使用var创建的隐含全局变量可以删除; 这表明隐含全局变量严格来讲不是真正的变量,而是全局对象的属性,属性可以通过delete操作符删除,但变量不可以。 3.单一var模式:只使用一个var在函数顶部进行变量声明(可以随带着赋值)是一种非常有用的原创 2015-09-04 10:14:12 · 527 阅读 · 0 评论 -
JavaScript技巧续
1.使用parseInt()的数值约定: 此方法共两个参数,第一个参数为字符串,第二个参数为进制,为了避免不一致性和未预测的结果,请每次都具体指定进制参数:var month = "06";month = parseInt(month, 10);另外一个将字符串转换为数值的方法: Number(“06”) 这种方法会比parseInt()快很多,因为parseInt()是解析而不是简单的转换原创 2015-09-08 23:16:17 · 332 阅读 · 0 评论 -
JavaScript技巧(二)续
1.不要增加内置的原型: 如果遇到以上情形,可以采用如下模式为原型增加自定义的方法:if (typeof Object.prototype.myMethod !== "function") { Object.prototype.myMethod = function() { //implementation... }}2.switch模式:var inspec原创 2015-09-05 19:41:05 · 303 阅读 · 0 评论 -
JavaScript技巧续(命名规范)
1.构造函数的首字母大写: JavaScript没有类,但是可以通过new调用构造函数:var lily = new Person();首字母小写的函数名和方法表明这些函数和方法不能使用new来调用。 在此说明一些利用requireJs编写JavaScript框架: 写法一(此种写法的弊端在于:将所有方法都暴露出来了):define(["base.self", "ajaxModule", "j原创 2015-09-16 14:26:24 · 435 阅读 · 0 评论 -
前端开发过程中需要注意的细节
1.当浏览器窗口发生变化时,内容较高的部分需要出现滚动条,这时,需要窗口发生改变时计算高度:jQuery(window).bind("resize", function() {self.calculateCameraTreeHeight()});2.当文字内容过长时的处理:给此部分设置宽度,然后设置如下样式:width: 100px;white-space:原创 2015-10-23 13:24:15 · 489 阅读 · 0 评论 -
利用display:table-cell让文字垂直居中(无论元素多少行)
html:<div>333333</div>css:div { display: table-cell; width: 200px; height: 200px; text-align: center; vertical-align: middle; border: 1px solid #F00;}说明: 通过display转化成为表格的形式,再采原创 2015-10-27 14:31:37 · 14517 阅读 · 0 评论 -
js对象
创建js对象有三种方式:对象字面量、内置的构造函数、自定义的构造函数 对象既有属性、又有方法 1.对象字面量创建对象:var dog = { name: "kitty", getName: function() { return "maomao"; }}完全删除对象属性/方法:delete dog.name;delete dog.getName;2.内原创 2015-11-09 10:31:38 · 407 阅读 · 0 评论 -
JS私有变量和静态私有变量
1.私有变量function myObject() { var privateVariable = 10; function privateFun() { return false; } this.publicMethod = function() { privateVariable++; return privateFun()原创 2016-03-28 18:24:29 · 6659 阅读 · 1 评论 -
ECMASCript5新特性之Function.prototype.bind
用途:如何在另一个函数中保持this上下文 实例一:var obj = { fun1: function(cb) { cb(); }, fun2: function() { alert(1); }, render: function() { var self = this; this.fun1(function() {原创 2016-03-30 10:18:17 · 461 阅读 · 0 评论 -
ECMAScript5新特性
数据属性特性:[[value]] [[writable]] [[enumerable]] [[configurable]] 访问器属性特性:[[enumerable]] [[configurable]] [[set]] [[get]] 要想修改属性默认的特性,就得用Object.defineProperty() 和 Object.defineProperties();var book = {原创 2016-03-18 18:38:42 · 403 阅读 · 0 评论 -
面向对象的js程序设计
1.工厂方法:没有解决对象识别问题,即怎样知道一个对象的类型function createPerson(name, age, job) { var obj = new Object(); obj.name = name; obj.age = age; obj.job = job; obj.sayName = function() { alert原创 2016-03-18 17:05:01 · 300 阅读 · 0 评论 -
JS函数表达式
1.递归:function digui(num) { if (num <= 1) { return 1; } else { return num*digui(num-1); // 报错 }}var d = digui;digui = null;d(3); 改进:用arguments.callee(num-1) 代替 digui(num-原创 2016-03-24 09:38:03 · 341 阅读 · 0 评论 -
解决requirejs循环依赖问题
一.问题:A依赖B(即A引用B且调用B中的方法),B也依赖A,这即为循环依赖,那么,当B调用A中的方法时,会发现A为undefined,这就是循环依赖导致的问题。 二.解决循环依赖的方法: 1.用scope模式传参方式; 2.用pubsub解耦; 3.用require(“A”)的方式: 3.1.enterlib-controller.js(即为A)中引用了enterlib-view.js(原创 2016-04-06 18:40:03 · 7561 阅读 · 0 评论 -
ElementUI中的小坑bug记录
1.elementUI的table的formatter(或者vue的filter过滤器),在mouseenter、mouseout等鼠标事件中均会执行相应的方法。这样多次执行,便会影响效率,带来滚动条、分页卡顿问题(如请求后端字典),有办法解决;2.elementUI的table(1).fixed,在任何分辨率下,都有可能出现border不不见了或者不均匀的情况,有办法解决;(2).在...原创 2019-09-09 15:42:31 · 1169 阅读 · 1 评论