Jadual Kandungan
1.if条件语句相关
2.arguments相关
5.事件的目标
7.阻止事件默认行为
8.上下文菜单事件:contextmenu
9.js中的文档模式-document.compatMode
10.跨浏览器获取Style
12.获取页面的宽高
Rumah hujung hadapan web tutorial js web前端的知识分享

web前端的知识分享

Jun 30, 2017 am 11:22 AM
web Pengetahuan nota

1.if条件语句相关

对于 if 语句括号里的表达式,ECMAScript 会自动调用 Boolean()转型函数将这个表达式的结果转换成一个布尔值。如果值为 true,执行后面的一条语句,否则不执行。

2.arguments相关

通过arguments 对象的length属性,来智能的判断有多少参数,然后把参数进行合理的应用 。

比如,要实现一个加法运算,将所有传进来的数字累加,而数字的个数又不确定。

1

2

3

function box() {var sum = 0;if (arguments.length == 0) return sum; //如果没有参数,退出for(var i = 0;i < arguments.length; i++) { //如果有,就累加sum = sum + arguments[i];

        }return sum; //返回累加结果    }

    alert(box(5,9,12));

Salin selepas log masuk

3.函数内部属性

函数内部,有两个特殊的对象:arguments 和 this。arguments 是一个类数组对象,包含着传入函数中的所有参数,主要用途是保存函数参数。但这个对象还有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。
对于阶乘函数一般要用到递归算法,所以函数内部一定会调用自身;如果函数名不改变是没有问题的,但一旦改变函数名,内部的自身调用需要逐一修改。为了解决这个问题,我们可以使用 arguments.callee 来代替。

1

2

3

function box(num) {if (num <= 1) {return 1;

        else {return num * arguments.callee(num-1);//使用 callee 来执行自身        }

    }

Salin selepas log masuk

4event对象

直接接收 event 对象,是 W3C 的做法,IE 不支持,IE 自己定义了一个 event 对象,直接在 window.event 获取即可。

1

2

input.onclick = function (evt) {var e = evt || window.event; //实现跨浏览器兼容获取 event 对象    alert(e);

};

Salin selepas log masuk

5.事件的目标

W3C 中的 target 和 IE 中的 srcElement,都表示事件的目标。

1

2

3

4

function getTarget(evt) {var e = evt || window.event;return e.target || e.srcElement; //兼容得到事件目标 DOM 对象}

document.onclick = function (evt) {var target = getTarget(evt);

    alert(target);

};

Salin selepas log masuk

6.阻止事件冒泡

在阻止冒泡的过程中,W3C 和 IE 采用的不同的方法,那么我们必须做一下兼容。

1

2

3

function stopPro(evt) {var e = evt || window.event;

    window.event ? e.cancelBubble = true : e.stopPropagation();

}

Salin selepas log masuk

7.阻止事件默认行为

1

2

3

4

5

6

function preDef(evt) {var e = evt || window.event;if (e.preventDefault) {

        e.preventDefault();

    else {

        e.returnValue = false;

    }

}

Salin selepas log masuk

8.上下文菜单事件:contextmenu

当我们右击网页的时候,会自动出现 windows 自带的菜单。那么我们可以使用 contextmenu 事件来修改我们指定的菜单,但前提是把右击的默认行为取消掉。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

function addEvent(obj, type, fn) { //添加事件兼容if (obj.addEventListener) {

        obj.addEventListener(type, fn);

    else if (obj.attachEvent) {

        obj.attachEvent('on' + type, fn);

    }

}function removeEvent(obj, type, fn) { //移除事件兼容if (obj.removeEventListener) {

    ob    j.removeEventListener(type, fn);

    else if (obj.detachEvent) {

        obj.detachEvent('on' + type, fn);

    }

}

 

 

addEvent(window, 'load'function () {var text = document.getElementById('text');

    addEvent(text, 'contextmenu'function (evt) {var e = evt || window.event;

        preDef(e);var menu = document.getElementById('menu');

        menu.style.left = e.clientX + 'px';

        menu.style.top = e.clientY + 'px';

        menu.style.visibility = 'visible';

        addEvent(document, 'click'function () {

            document.getElementById('myMenu').style.visibility = 'hidden';

        });

    });

});

Salin selepas log masuk

9.js中的文档模式-document.compatMode

文档模式在开发中貌似很少用到,最常见的是就是在获取页面宽高的时候,比如文档宽高,可见区域宽高等。

IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样,但在Quirks Mode模式下则有很大差别,而在不声明Doctype的情况下,IE默认又是Quirks Mode。所以为兼容性考虑,我们可能需要获取当前的文档渲染方式。

document.compatMode正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat

BackCompat:标准兼容模式关闭。浏览器客户区宽度是document.body.clientWidth;

CSS1Compat:标准兼容模式开启。 浏览器客户区宽度是document.documentElement.clientWidth。

例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

function getViewport(){

    if (document.compatMode == "BackCompat"){

      return {

        width: document.body.clientWidth,

        height: document.body.clientHeight

      }

    } else {

      return {

        width: document.documentElement.clientWidth,

        height: document.documentElement.clientHeight

      }

    }

  }

Salin selepas log masuk

10.跨浏览器获取Style

1

2

3

4

function getStyle(element, attr) {if (typeof window.getComputedStyle != 'undefined') {//W3Creturn window.getComputedStyle(element, null)[attr];

    else if (typeof element.currentStyle != 'undeinfed') {//IEreturn element.currentStyle[attr];

    }

}

Salin selepas log masuk

11.js动态插入css相关styleSheets,insertRule,addRule,还有删除样式:deleteRule,removeRule

标准浏览器支持 insertRule, IE低版本则支持 addRule。

12.获取页面的宽高

window.innerWidth,window.innerHeight与document.documentElement.clientWidth,document.documentElement.clientHeight
注:用jquery获取的页面的宽度页面不包括滚动条的宽度的
window.innerWidth与window.innerHeight(IE9及以上,谷歌,火狐识别,宽高包含滚动条的宽度)
document.documentElement.clientWidth与document.documentElement.clientHeight(IE,火狐,谷歌都能识别,宽高不包含滚动条的宽度)
如果页面没有滚动条:
window.innerWidth==document.documentElement.clientWidth,
window.innerHeight==document.documentElement.clientHeight(IE8及一下不识别window.innerHeight与window.innerWidth)

1

2

3

4

5

6

7

8

9

10

//跨浏览器获取视口大小function getInner() {if (typeof window.innerWidth != 'undefined') { //IE8及以下undefinedreturn {

            width : window.innerWidth,

            height : window.innerHeight

        }

    else {return {

            width : document.documentElement.clientWidth,

            height : document.documentElement.clientHeight

        }

    }

}

Salin selepas log masuk

 

Atas ialah kandungan terperinci web前端的知识分享. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk memadam nota Xiaohongshu Bagaimana untuk memadam nota Xiaohongshu Mar 21, 2024 pm 08:12 PM

Bagaimana untuk memadam nota Xiaohongshu

Bolehkah nota yang dipadam pada Xiaohongshu dipulihkan? Bolehkah nota yang dipadam pada Xiaohongshu dipulihkan? Oct 31, 2023 pm 05:36 PM

Bolehkah nota yang dipadam pada Xiaohongshu dipulihkan?

Apakah yang perlu saya lakukan jika nota yang saya siarkan di Xiaohongshu tiada? Apakah sebab mengapa nota yang dihantar tidak ditemui? Apakah yang perlu saya lakukan jika nota yang saya siarkan di Xiaohongshu tiada? Apakah sebab mengapa nota yang dihantar tidak ditemui? Mar 21, 2024 pm 09:30 PM

Apakah yang perlu saya lakukan jika nota yang saya siarkan di Xiaohongshu tiada? Apakah sebab mengapa nota yang dihantar tidak ditemui?

Cara menyambungkan Apple Notes pada iPhone dalam sistem iOS 17 terkini Cara menyambungkan Apple Notes pada iPhone dalam sistem iOS 17 terkini Sep 22, 2023 pm 05:01 PM

Cara menyambungkan Apple Notes pada iPhone dalam sistem iOS 17 terkini

Cara menambah pautan produk dalam nota dalam Xiaohongshu Tutorial menambah pautan produk dalam nota dalam Xiaohongshu Cara menambah pautan produk dalam nota dalam Xiaohongshu Tutorial menambah pautan produk dalam nota dalam Xiaohongshu Mar 12, 2024 am 10:40 AM

Cara menambah pautan produk dalam nota dalam Xiaohongshu Tutorial menambah pautan produk dalam nota dalam Xiaohongshu

Cara menggunakan kedi pelayan web Nginx Cara menggunakan kedi pelayan web Nginx May 30, 2023 pm 12:19 PM

Cara menggunakan kedi pelayan web Nginx

Perlindungan masa nyata terhadap rentetan penyekat muka di web (berdasarkan pembelajaran mesin) Perlindungan masa nyata terhadap rentetan penyekat muka di web (berdasarkan pembelajaran mesin) Jun 10, 2023 pm 01:03 PM

Perlindungan masa nyata terhadap rentetan penyekat muka di web (berdasarkan pembelajaran mesin)

Bagaimana untuk mengkonfigurasi nginx untuk memastikan bahawa pelayan frps dan web berkongsi port 80 Bagaimana untuk mengkonfigurasi nginx untuk memastikan bahawa pelayan frps dan web berkongsi port 80 Jun 03, 2023 am 08:19 AM

Bagaimana untuk mengkonfigurasi nginx untuk memastikan bahawa pelayan frps dan web berkongsi port 80

See all articles