bob体育官方平台
bob体育官方平台JavaScript组件核心与页内锚点间传值的主意_javascript才干_脚本之家

本文实例讲述了JavaScript组件焦点与页内锚点间传值的方法。分享给大家供大家参考。具体分析如下:

BOM(Browser Object Model) 是指浏览器对象模型

用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。

上述的这两个小功能在一些新式的手机页面是很有用的。

window

BOM 的核心是window对象,它表示浏览器的一个实例。在浏览器中,即是javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象,这就意味着在网页中定义的任意变量、函数、对象都是以window作为Global对象。
所有在全局作用域中声明的变量、函数、对象都会作为window的属性和方法

如何光标放上输入框就触发事件,离开输入框就触发另一个事件呢?即使用户不输入任何东西……

范例

var age = 24;

function printName(){
    console.log(age);
}

console.log(window.age);
window.printName();
24
24

页间传值很简单,但在页内的锚点之间是如何传值呢?

window对象属性

一、基本目标

window.innerHeight属性与outerHeight属性

通过window.innerHeight和window.outerHeight可以得到整个窗口的高度。其中:

  • innerHeight是DOM视口的大小,包括滚动条。
  • outerHeight是整个浏览器窗口的大小,包括窗口标题、工具栏、状态栏等。
![](https://upload-images.jianshu.io/upload_images/10372596-893f72ee9b3cbae0.png)

inner-outter-height.png
window.innerHeight
720
window.outerHeight
860

把Height改为Width同样有效,分别是innerWidth和outerWidth。

有一个页面,上面有一个输入框,一个超级链接,这两个东西是没有任何关联的,

scrollX、scrollY

  • scrollX:滚动条横向偏移
  • scrollY:滚动条纵向偏移
scrollX
28
scrollY
7

这两个值随着滚动位置变化而变化

只是因为功能不大,所以把两个功能合起来写

scrollTo、scrollBy、scroll

我们也可以通过方法scrollTo或者scroll方法改变滚动条位置到指定坐标

window.scrollTo(0, 300); // 滚动条纵向偏移移动到300px处

两个参数分别是水平、垂直方向偏移
scrollBy可以相对当前位置移动滚动条,而不是移动到绝对位置

scrollBy(0, 100); // 滚动条下移100px

1、输入框功能

window.frames

window.frames返回一个类似数组的对象,成员为页面内的所有框架,包括frame元素和iframe元素。需要注意的是,window.frames的每个成员对应的是框架内的窗口(即框架的window对象),获取每个框架的DOM树,需要使用window.frames[0].document。

var iframe = window.getElementsByTagName("iframe")[0];
var iframe_title = iframe.contentWindow.title;

上面代码用于获取框架页面的标题。

iframe元素遵守同源政策,只有当父页面与框架页面来自同一个域名,两者之间才可以用脚本通信,否则只有使用window.postMessage方法。

在iframe框架内部,使用window.parent指向父页面

一旦把光标放上对话框背景就变成红色,一旦用户的鼠标点击其他地方则重新变为灰色的背景

navigator

Window对象的navigator属性,指向一个包含浏览器相关信息的对象。
navigator.userAgent属性返回浏览器的User-Agent字符串,用来标示浏览器的种类。下面是Chrome浏览器的User-Agent。

navigator.userAgent // "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"

通过userAgent属性识别浏览器,不是一个好办法。因为必须考虑所有的情况(不同的浏览器,不同的版本),非常麻烦,而且无法保证未来的适用性,更何况各种上网设备层出不穷,难以穷尽。所以,现在一般不再识别浏览器了,而是使用“功能识别”方法,即逐一测试当前浏览器是否支持要用到的JavaScript功能。

2、超级链接功能

范例:判断用户的浏览器类型

    function isAndroid(){
        return /Android/.test(navigator.userAgent);
    }
    function isIphone(){
        return /iPhone/.test(navigator.userAgent);
    }
    function isIpad(){
        return /iPad/.test(navigator.userAgent);
    }
    function isIOS(){
        return /(iPad)|(iPhone)/.test(navigator.userAgent);
    }

向页面下方的bottom锚点通过get方法传递值text=1的值,bottom锚点下面有个已被禁用的输入框,不停在轮询地址栏上面的text参数

screen

screen对象包含了显示设备的信息

// 显示设备的高度,单位为像素
screen.height
// 900

// 显示设备的宽度,单位为像素
screen.width
// 1600

一般使用以上两个属性,了解设备的分辨率。上面代码显示,我的PC设备的分辨率是900x1600。除非调整显示器的分辨率,否则这两个值可以看作常量,不会发生变化。显示器的分辨率与浏览器设置无关,缩放网页并不会改变分辨率。

开始如果不点击,则没有text参数,所以输入框一直显示为null

window.getComputedStyle

getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象([object CSSStyleDeclaration])
一看这个函数的名字我们就知道问题解决了

  var style = window.getComputedStyle("元素", "伪类");
//第二个参数没有伪类则不设置
var div = document.getElementById('test');
console.log(getComputedStyle(div).width);
//这个是低版本IE的实现方案,我们可以写个兼容的方式
element.currentStyle ?
    element.currentStyle : window.getComputedStyle(element, null)
返回顶部