js知识点分享
一、object對象
一、屬性?
Object自帶一個prototype的屬性,即Object.prototype,Object.prototype本身也是一個對象,也會有一些屬性和方法。如下:?
1、屬性?
?
Object.prototype.writable:默認為false?
Object.prototype.enumerable:默認為false?
Object.prototype.configurable:默認為false?
Object.prototype.constructor:用于創建一個對象的原型。
2、常用方法?
?


Object.prototype.hasOwnProperty():返回一個布爾值,表示某個對象是否含有指定的屬性,而且此屬性非原型鏈繼承。
?
Object.prototype.isPrototypeOf():返回一個布爾值,表示指定的對象是否在本對象的原型鏈中。
?
Object.prototype.propertyIsEnumerable():判斷指定屬性是否可枚舉。
?
Object.prototype.toString():返回對象的字符串表示。
?
Object.prototype.watch():給對象的某個屬性增加監聽。
?
Object.prototype.unwatch():移除對象某個屬性的監聽。
?
Object.prototype.valueOf():返回指定對象的原始值。


?
?
二、方法?
Object.assign(target, …sources):把任意多個的源對象自身的可枚舉屬性拷貝給目標對象,然后返回目標對象。
?
Object.create(proto,[propertiesobject]):創建一個擁有指定原型和若干個指定屬性的對象。
?
Object.defineProperties(obj, props):在一個對象上添加或修改一個或者多個自有屬性,并返回該對象。
?
Object.defineProperty(obj, prop, descriptor):直接在一個對象上定義一個新屬性,或者修改一個已經存在的屬性, 并返回這個對象。obj:需要定義屬性的對象。prop:需定義或修改的屬性的名字。descriptor:將被定義或修改的屬性的描述符。
?
Object.entries(obj):返回一個包含由給定對象所有可枚舉屬性的屬性名和屬性值組成的 [屬性名,屬性值] 鍵值對的數組,數組中鍵值對的排列順序和使用for…in循環遍歷該對象時返回的順序一致。?
舉例:?
?
var obj = { foo: “bar”, baz: 42 };?
console.log(Object.entries(obj)); // [ [‘foo’, ‘bar’], [‘baz’, 42] ]
?
?
Object.freeze(obj):凍結一個對象,凍結指的是不能向這個對象添加新的屬性,不能修改其已有屬性的值,不能刪除已有屬性,以及不能修改該對象已有屬性的可枚舉性、可配置性、可寫性。也就是說,這個對象永遠是不可變的。該方法返回被凍結的對象。
?
Object.getOwnPropertyDescriptor(obj, prop):返回指定對象上一個自有屬性對應的屬性描述符。
?
Object.getOwnPropertyNames(obj):返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性)組成的數組。?
舉例:?
// 類數組對象?
var obj = { 0: “a”, 1: “b”, 2: “c”};?
console.log(Object.getOwnPropertyNames(obj).sort()); // [“0”, “1”, “2”]
?
Object.getPrototypeOf(object):返回該對象的原型。
?
Object.is(value1, value2):判斷兩個值是否是同一個值。
?
Object.isExtensible(obj):判斷一個對象是否是可擴展的(是否可以在它上面添加新的屬性)。
?
Object.isFrozen(obj):判斷一個對象是否被凍結(frozen)。
?
Object.isSealed(obj):判斷一個對象是否是密封的(sealed)。密封對象是指那些不可 擴展 的,且所有自身屬性都不可配置的(non-configurable)且屬性不可刪除的對象(其可以是可寫的)。
?
Object.keys(obj):返回一個由給定對象的所有可枚舉自身屬性的屬性名組成的數組,數組中屬性名的排列順序和使用for-in循環遍歷該對象時返回的順序一致?
舉例:?
var arr = [“a”, “b”, “c”];?
alert(Object.keys(arr)); // 彈出”0,1,2”
?
// 類數組對象?
?
var obj = { 0 : “a”, 1 : “b”, 2 : “c”};?
alert(Object.keys(obj)); // 彈出”0,1,2”
?
?
Object.preventExtensions(obj):讓一個對象變的不可擴展,也就是永遠不能再添加新的屬性。
?
Object.setPrototypeOf(obj, prototype):將一個指定的對象的原型設置為另一個對象或者null
?
Object.values(obj):返回一個包含指定對象所有的可枚舉屬性值的數組,數組中的值順序和使用for…in循環遍歷的順序一樣。?
舉例:?
?
var obj = { foo: “bar”, baz: 42 };?
console.log(Object.values(obj)); // [‘bar’, 42]
二、JSX
JSX簡介
?
JSX就是Javascript和XML結合的一種格式。React發明了JSX,利用HTML語法來創建虛擬DOM。當遇到<,JSX就當HTML解析,遇到{就當JavaScript解析。
?
如下(JS寫法)
?

var child1 = React.createElement('li', null, 'First Text Content');
var child2 = React.createElement('li', null, 'Second Text Content');
var root = React.createElement('ul', { className: 'my-list' }, child1, child2);

等價于(JSX寫法)
?



var root =(
? <ul className="my-list">
? ? <li>First Text Content</li>
? ? <li>Second Text Content</li>
? </ul>
);



后者將XML語法直接加入JS中,通過代碼而非模板來高效的定義界面。之后JSX通過翻譯器轉換為純JS再由瀏覽器執行。在實際開發中,JSX在產品打包階段都已經編譯成純JavaScript,JSX的語法不會帶來任何性能影響。另外,由于JSX只是一種語法,因此JavaScript的關鍵字class, for等也不能出現在XML中,而要如例子中所示,使用className, htmlFor代替,這和原生DOM在JavaScript中的創建也是一致的。JSX只是創建虛擬DOM的一種語法格式而已,除了用JSX,我們也可以用JS代碼來創建虛擬DOM.
?
?
?
JSX語法介紹
?
大括號里是JavaScript,不要加引號,加引號就會被當成字符串。
?
三元表達式
?
JSX本身就和XML語法類似,可以定義屬性以及子元素。唯一特殊的是可以用大括號來加入JavaScript表達式.例如:
?
var person = <Person name={window.isLoggedIn ? window.name : ''} />;
上述代碼經過JSX編譯后會得到:
?
var person = React.createElement(
? Person,
? {name: window.isLoggedIn ? window.name : ''}
);
數組遞歸
?
數組循環,數組的每個元素都返回一個React組件。
?



var lis = this.todoList.todos.map(function (todo) {
? return (
? ? <li>
? ? ? <input type="checkbox" checked={todo.done}>
? ? ? <span className={'done-' + todo.done}>{todo.text}</span>
? ? </li>
? );
});
?
var ul = (
? <ul className="unstyled">
? ? {lis}
? </ul>
);



?
?
JSX中綁定事件
?
JSX讓事件直接綁定在元素上。
?
<button onClick={this.checkAndSubmit.bind(this)}>Submit</button>
和原生HTML定義事件的唯一區別就是JSX采用駝峰寫法來描述事件名稱,大括號中仍然是標準的JavaScript表達式,返回一個事件處理函數。
?
React并不會真正的綁定事件到每一個具體的元素上,而是采用事件代理的模式:在根節點document上為每種事件添加唯一的Listener,然后通過事件的target找到真實的觸發元素。這樣從觸發元素到頂層節點之間的所有節點如果有綁定這個事件,React都會觸發對應的事件處理函數。這就是所謂的React模擬事件系統。盡管整個事件系統由React管理,但是其API和使用方法與原生事件一致。
?
?
?
JSX中使用樣式
?
在JSX中使用樣式和真實的樣式也很類似,通過style屬性來定義,但和真實DOM不同的是,屬性值不能是字符串而必須為對象。
?
例如:
?
<div style={{color: '#ff0000', fontSize: '14px'}}>Hello World.</div>
或者
?



var style = {
? color: '#ff0000',
? fontSize: '14px'
};
?
var node = <div style={style}>HelloWorld.</div>;



要明確記住,{}里面是JS代碼,這里傳進去的是標準的JS對象。在JSX中可以使用所有的的樣式,基本上屬性名的轉換規范就是將其寫成駝峰寫法,例如“background-color”變為“backgroundColor”, “font-size”變為“fontSize”,這和標準的JavaScript操作DOM樣式的API是一致的。
?
?
?
HTML轉義
?
在組件內部添加html代碼,并將html代碼渲染到頁面上。React默認會進行HTML的轉義,避免XSS攻擊,如果要不轉義,可以這么寫:
?



var content='<strong>content</strong>'; ? ?
?
React.render(
? ? <div dangerouslySetInnerHTML={{__html: content}}></div>,
? ? document.body
);
三、eval
1. 和其他解釋性語言一樣,javascript 同樣可以解釋運行由javascript源代碼組成的字符串,javascript 通過eval()來完成。
2. eval() 其實是一個函數,是javascript很早版本中就已經存在,但是javascript設計者和解釋器對其進行了許多的限制,看起來eval更像一個運算符。但是作為用于動態執行代碼,eval存在這樣的問題,解釋器無法對動態代碼做進一步的優化。如果將它看做一個函數,那它是可以被賦予其他名字的:
?
?var A = eval;
?var B = A;
如果是這樣的話,那么解釋器就無法優化調用B()的函數了。因此設計者賦予eval一些運算符的特性(作為保留字)之后這些問題得到解決。
?
3. Eval 只有一個參數,如果傳入的不是字符串的話,它直接返回這個參數;如果是字符串,那么首先會進行編譯,如編譯失敗則爆出語法錯誤;編譯成功則執行代碼。更主要的是eval可以使用調用它的變量作用域環境,也就是說它查找的變量或者新增的變量作用域跟代碼的完全一樣。
如:
?

function A()
{
? eval('var x ;');
? eval("x=1"); //在一個函數中定義或者更改,那就是針對局部變量。
}

4. 全局eval
eval 可以動態執行代碼,并申明或者改變變量,當然可以對全局變量進行上述操作。如
?


var globalEval = eval; //定義全局eval函數別名
var a ='global', b = 'global'; //全局變量
function c()
{
? var a = 'local'; //局部變量
eval('a+="changed"'); //直接更改局部變量的值
?return a; //返回更改后的局部變量
}
?function d()
{
? ?var b = 'local';
? ?globalEval("b+='changed'");
? ?return b;
}?
?
console.log(c(), a); //localchanged global
console.log(d() , b) //local globalchanged更強的是,全局的eval還可以更改局部變量的能力,不過這也是javascript優化的一個大問題。 當然在嚴格模式下,eval更像一個運算符,不可以用別名來覆蓋eval。


四、AJAX
什么是 AJAX ?
?
AJAX = 異步 JavaScript 和 XML。
?
AJAX 是一種用于創建快速動態網頁的技術。
?
通過在后臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
?
傳統的網頁(不使用 AJAX)如果需要更新內容,必需重載整個網頁面。
?
有很多使用 AJAX 的應用程序案例:新浪微博、Google 地圖、開心網等等。
?
AJAX 實例解釋
?
上面的 AJAX 應用程序包含一個 div 和一個按鈕。
?
div 部分用于顯示來自服務器的信息。當按鈕被點擊時,它負責調用名為 loadXMLDoc() 的函數:
?


<html>
<body>
?
<div id="myDiv"><h3>Let AJAX change this text</h3></div>
<button type="button" οnclick="loadXMLDoc()">Change Content</button>
?
</body>
</html>


?
?
接下來,在頁面的 head 部分添加一個 <script> 標簽。該標簽中包含了這個 loadXMLDoc() 函數:
?


<head>
<script type="text/javascript">
function loadXMLDoc()
{
.... AJAX script goes here ...
}
</script>
</head>


Ajax的使用
?
以下步驟,如果不能理解你死記硬背都要記下來,總比你答不出來要好吧!
?
1.創建Ajax核心對象XMLHttpRequest
?
var xmlhttp; ?
if (window.XMLHttpRequest) ?
? {// 兼容 IE7+, Firefox, Chrome, Opera, Safari ?
? xmlhttp=new XMLHttpRequest(); ?
? } ?
else ?
? {// 兼容 IE6, IE5 ?
? xmlhttp=newActiveXObject("Microsoft.XMLHTTP"); ?
? } ?
?
2.向服務器發送請求
?
xmlhttp.open(method,url,async); ?
send(string) ?
注意:open 的參數要牢記,很多面試官愛問這樣的細節
?
method:請求的類型;GET 或 POST
url:文件在服務器上的位置
async:true(異步)或 false(同步)
send(string)方法post請求時才使用字符串參數,否則不用帶參數。
?
注意:post請求一定要設置請求頭的格式內容
?
xmlhttp.open("POST","ajax_test.html",true); ?
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); ?
xmlhttp.send("fname=Henry&lname=Ford"); ??
3.服務器響應處理
?
responseText 獲得字符串形式的響應數據。
responseXML 獲得XML 形式的響應數據。
?
? ? ? ?3.1 同步處理
?
xmlhttp.open("GET","ajax_info.txt",false); ?
xmlhttp.send(); ?
document.getElementById("myDiv").innerHTML=xmlhttp.responseText; ?
直接在send()后面處理返回來的數據。
?
3.2 異步處理
?
異步處理相對比較麻煩,要在請求狀態改變事件中處理。
?
?
?
xmlhttp.onreadystatechange=function() ?
? { ?
? if (xmlhttp.readyState==4 &&xmlhttp.status==200) ?
? ? { ?
? ?document.getElementById("myDiv").innerHTML=xmlhttp.responseText; ?
? ? } ?
? } ?
?
?
?
一共有5中請求狀態,從0 到 4 發生變化。
?
0: 請求未初始化
?
1: 服務器連接已建立
?
2: 請求已接收
?
3: 請求處理中
?
4: 請求已完成,且響應已就緒
?
?
?
xmlhttp.status:響應狀態碼。這個也是面試比較愛問的,這個必須知道4個以上,比較常見的有:
?
200: "OK"
?
403 (禁止) 服務器拒絕請求。
?
404 (未找到) 服務器找不到請求的網頁。
?
408 (請求超時) 服務器等候請求時發生超時。
?
500 (服務器內部錯誤) 服務器遇到錯誤,無法完成請求
?
XMLHttpRequest 是 AJAX 的基礎。
XMLHttpRequest 對象
?
所有現代瀏覽器均支持 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。
?
XMLHttpRequest 用于在后臺與服務器交換數據。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
?
創建 XMLHttpRequest 對象
?
所有現代瀏覽器(IE7+、Firefox、Chrome、Safari 以及 Opera)均內建 XMLHttpRequest 對象。
?
創建 XMLHttpRequest 對象的語法:
?
variable=new XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對象:
?
variable=new ActiveXObject("Microsoft.XMLHTTP");
為了應對所有的現代瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支持 XMLHttpRequest 對象。如果支持,則創建 XMLHttpRequest 對象。如果不支持,則創建 ActiveXObject :
?


var xmlhttp;
if (window.XMLHttpRequest)
? {// code for IE7+, Firefox, Chrome, Opera, Safari
? xmlhttp=new XMLHttpRequest();
? }
else
? {// code for IE6, IE5
? xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
? }


五、JS事件
事件是可以被 JavaScript 偵測到的行為。
?
事件
?
JavaScript 使我們有能力創建動態頁面。事件是可以被 JavaScript 偵測到的行為。
?
網頁中的每個元素都可以產生某些可以觸發 JavaScript 函數的事件。比方說,我們可以在用戶點擊某按鈕時產生一個 onClick 事件來觸發某個函數。事件在 HTML 頁面中定義。
?
事件舉例:
?
鼠標點擊
頁面或圖像載入
鼠標懸浮于頁面的某個熱點之上
在表單中選取輸入框
確認表單
鍵盤按鍵
注意:事件通常與函數配合使用,當事件發生時函數才會執行。
?
onload 和 onUnload
?
當用戶進入或離開頁面時就會觸發 onload 和 onUnload 事件。
?
onload 事件常用來檢測訪問者的瀏覽器類型和版本,然后根據這些信息載入特定版本的網頁。
?
onload 和 onUnload 事件也常被用來處理用戶進入或離開頁面時所建立的 cookies。例如,當某用戶第一次進入頁面時,你可以使用消息框來詢問用戶的姓名。姓名會保存在 cookie 中。當用戶再次進入這個頁面時,你可以使用另一個消息框來和這個用戶打招呼:"Welcome John Doe!"。
?
onFocus, onBlur 和 onChange
?
onFocus、onBlur 和 onChange 事件通常相互配合用來驗證表單。
?
下面是一個使用 onChange 事件的例子。用戶一旦改變了域的內容,checkEmail() 函數就會被調用。
?
<input type="text" size="30" id="email" οnchange="checkEmail()">
onSubmit
?
onSubmit 用于在提交表單之前驗證所有的表單域。
?
下面是一個使用 onSubmit 事件的例子。當用戶單擊表單中的確認按鈕時,checkForm() 函數就會被調用。假若域的值無效,此次提交就會被取消。checkForm() 函數的返回值是 true 或者 false。如果返回值為true,則提交表單,反之取消提交。
?
<form method="post" action="xxx.htm" οnsubmit="return checkForm()">
onMouseOver 和 onMouseOut
?
onMouseOver 和 onMouseOut 用來創建“動態的”按鈕。
?
下面是一個使用 onMouseOver 事件的例子。當 onMouseOver 事件被腳本偵測到時,就會彈出一個警告框:
?
<a href="http://www.w3school.com.cn"
οnmοuseοver="alert('An onMouseOver event');return false">
<img src="w3school.gif" width="100" height="30"> </a>
六、window對象屬性和方法
window對象有以下方法:
?
open close alert confirm prompt setTimeout clearTimeout setInterval clearInterval moveBy moveTo resizeBy resizeTo scrollBy scrollTo find back forward home stop print blur focus captureEvent enableExternalCapture disableExternalCapture handleEvent releaseEvent routeEvent scroll
?
1. open方法
?
語法格式:window.open(URL,窗口名稱,窗口風格)
?
功能:打開一個新的窗口,并在窗口中裝載指定URL地址的網頁。
?
說明:
?
open方法用于打開一個新的瀏覽器窗口,并在新窗口中裝入一個指定的URL地址;
?
open方法在打開一個新的瀏覽器窗口時,還可以指定窗口的名稱(第二個參數);
?
open方法在打開一個新的瀏覽器窗口時,還可以指定窗口的風格(第三個參數),窗口風格有以下選項,這些選項可以多選,如果多選,各選項之間用逗號分隔:
?
toolbar:指定窗口是否有標準工具欄。當該選項的值為1或yes時,表示有標準工具欄,當該選項的值為0或no時,表示沒有標準工具欄;
?
location:指定窗口是否有地址工具欄,選項的值及含義與toolbar相同;
directories:指定窗口是否有鏈接工具欄,選項的值及含義與toolbar相同;
status:指定窗口是否有狀態欄,選項的值及含義與toolbar相同;
menubar:指定窗口是否有菜單,選項的值及含義與toolbar相同;
scrollbar:指定當前窗口文檔大于窗口時是否有滾動條,選項的值及含義與toolbar相同;
resizable:指定窗口是否可改變大小,選項的值及含義與toolbar相同;
width:以像素為單位指定窗口的寬度,已被innerWidth取代;
height:以像素為單位指定窗口的高度,已被innerHeight取代;
outerWidth:以像素為單位指定窗口的外部寬度;
outerHeight:以像素為單位指定窗口的外部高度;
left:以像素為單位指定窗口距屏幕左邊的位置;
top:以像素為單位指定窗口距屏幕頂端的位置;
alwaysLowered:指定窗口隱藏在所有窗口之后,選項的值及含義與toolbar相同;
alwaysRaised:指定窗口浮在所有窗口之上,選項的值及含義與toolbar相同;
dependent:指定打開的窗口為當前窗口的一個子窗口,并隨著父窗口的關閉而關閉,選項的值及含義與toolbar相同;
hotkeys:在沒有菜單欄的新窗口中設置安全退出的熱鍵,選項的值及含義與toolbar相同;
innerHeight:設定窗口中文檔的像素高度;
innerWidth:設定窗口中文檔的像素寬度;
screenX:設定窗口距離屏幕左邊界的像素長度;
screenY:設定窗口距離屏幕上邊界的像素長度;
titleBar:指明標題欄是否在新窗口中可見,選項的值及含義與toolbar相同;
z-look:指明當窗口被激活時,不能浮在其它窗口之上,選項的值及含義與toolbar相同。
open方法返回的是該窗口的引用。
?
小技巧:該方法經常用于在打開一個網頁時自動打開另一個窗口。
?
2. close方法
?
語法格式:window.close()
?
功能:close方法用于自動關閉瀏覽器窗口。
?
3. alert方法
?
語法格式: window.alert(提示字符串)
?
功能:彈出一個警告框,在警告框內顯示提示字符串文本。
?
4. confirm方法
?
語法格式:window.confirm(提示字符串)
?
功能:顯示一個確認框,在確認框內顯示提示字符串,當用戶單擊“確定”按鈕時該方法返回true,單擊“取消”時返回false。
?
5. prompt方法
?
語法格式:window.prompt(提示字符串,缺省文本)
?
功能:顯示一個輸入框,在輸入框內顯示提示字符串,在輸入文本框顯示缺省文本,并等待用戶輸入,當用戶單擊“確定”按鈕時,返回用戶輸入的字符串,當單擊“取消”按鈕時,返回null值。
?
6. setTimeout方法
?
語法格式:window.setTimeout(代碼字符表達式,毫秒數)
?
功能:定時設置,當到了指定的毫秒數后,自動執行代碼字符表達式。
?
7. clearTimeout方法
?
語法格式:window.clearTimeout(定時器)
?
功能:取消以前的定時設置,其中的參數是用setTimeout設置時的返回值。
?
8. setInterval方法
?
語法格式:window.setInterval(代碼字符表達式,毫秒數)
?
功能:設定一個時間間隔后(第二個參數),反復執行“代碼字符表達式”的內容
?
9. clearInterval方法
?
語法格式:window.clearInterval(時間間隔器)
?
功能:取消setInterval設置的定時。其中的參數是setInterval方法的返回值。
?
10. moveBy方法
?
語法格式:window.moveBy(水平位移量,垂直位移量)
?
功能:按照給定像素參數移動指定窗口。第一個參數是窗口水平移動的像素,第二個參數是窗口垂直移動的像素。
?
11.moveTo方法
?
語法格式:window.moveTo(x,y)
?
功能:將窗口移動到指定的指定坐標(x,y)處。
?
12. resizeBy方法
?
語法格式:window.resizeBy(水平,垂直)
?
功能:將當前窗口改變指定的大小(x,y),當x、y的值大于0時為擴大,小于0時為縮小。
?
13. resizeTo方法
?
語法格式:window.resizeTo(水平寬度,垂直寬度)
?
功能:將當前窗口改變成(x,y)大小,x、y分別為寬度和高度。
?
14. scrollBy方法
?
語法格式:window.scrollBy(水平位移量,垂直位移量)
?
功能:將窗口中的內容按給定的位移量滾動。參數為正數時,正向滾動,否則反向滾動。
?
15. scrollTo方法
?
語法格式:window.scrollTo(x,y)
?
功能:將窗口中的內容滾動到指定位置。
?
16.find方法
?
語法格式:window.find()
?
功能:當觸發該方法時,將彈出一個“find”(查找)對話窗口,并允許用戶在觸發find方法的頁面中查找一個字符串。
?
注:該屬性在IE5.5及Netscape6.0中都不支持。
?
17. back方法
?
語法格式:window.back()
?
功能:模擬用戶點擊瀏覽器上的“后退”按鈕,將頁面轉到瀏覽器的上一頁。
?
說明:僅當當前頁面存在上一頁時才能進行該操作。
?
注:IE5.5不支持該方法,Netscape6.0支持。
?
18. forward方法
?
語法格式:window.forward()
?
功能:模擬用戶點擊瀏覽器上的“前進”按鈕,將頁面轉到瀏覽器的下一頁。
?
說明:僅當當前頁面存在下一頁時才能進行該操作。
?
注:IE5.5不支持該方法,Netscape6.0支持。
?
19. home方法
?
語法格式:window.home()
?
功能:模擬用戶點擊瀏覽器上的“主頁”按鈕,將頁面轉到指定的頁面上。
?
注:IE5.5不支持該方法,Netscape6.0支持。
?
20. stop方法
?
語法格式:window.stop()
?
功能:模擬用戶點擊瀏覽器上的“停止”按鈕,終止瀏覽器的下載操作。
?
注:IE5.5不支持該方法,Netscape6.0支持。
?
21. print方法
?
語法格式:window.print()
?
功能:模擬用戶點擊瀏覽器上的“打印”按鈕,通知瀏覽器打開打印對話框打印當前頁。
?
22. blur方法
?
語法格式:window.blur()
?
功能:從窗口中移出焦點。當與focus方法合用時必須小心,因為可能導致焦點不斷移進移出。
?
23. focus方法
?
語法格式:window.focus()
?
功能:使窗口中得到焦點。當與blur方法合用時必須小心,因為可能導致焦點不斷移進移出
?
24. captureevent方法
?
語法格式:window.captureevent(event)
?
window.captureevent(事件1|事件2|…|事件n)
?
功能:捕捉指定參數的所有事件。由于能夠捕獲哪些由本地程序自己處理的事件,所以程序員可以隨意定義函數來處理事件。如果有多個事件需要捕捉,各事件之間用管道符“|”隔開。可捕捉的事件類型如下:
?
event.abort event.blur event.change event.click event.dblclick event.dragdrop event.error event.focus event.keydown event.keypress event.keyup event.load event.mousedown event.mousuemove event.mouseout event.mouseover event.mouseup event.move event.reset event.resize event.select event.submit event.unload
?
25. enableexternalcapture事件
?
語法格式:window.enableexternalcapture(event)
?
功能:enableexternalcapture方法用于捕捉通過參數傳入的外部事件。
?
26. disableexternalcapture事件
?
語法格式:window.disableexternalcapture()
?
功能:取消enableexternalcapture方法的設置,終止對外部事件的捕捉。
?
27. handleevent事件
?
語法格式:window.handleevent(event)
?
功能:觸發指定事件的事件處理器。
?
28. releaseevent事件
?
語法格式:window.releaseevent(event)
?
window.releaseevent(事件1|事件2|…|事件n)
?
功能:釋放通過參數傳入的已被捕捉的事件,這些事件是由window.captureevent方法設置的,可釋放的事件與captureevent相同。
?
29. routeevent事件
?
語法格式:window.releaseevent(event)
?
功能:把被捕捉類型的所有事件轉交給標準事件處理方法進行處理,可轉交的事件與captureevent相同。
?
30. scroll事件
?
語法格式:window.scroll(x坐標,y坐標)
?
功能:將窗口移動到指定的坐標位置。
?
window對象的屬性
?
window對象具有如下屬性:
?
status statusbar statusbar.visible defaultstatus location locationbar locationbar.visible self name closed frames frames.length length document history innerheight innerwidth menubar menubar.visible opener outerheight outerwidth pagexoffset pageyoffset parent personalbar personalbar.visible scrollbar scrollbar.visible toolbar toolbar.visible top
?
1. status屬性
?
語法格式:window.status=字符串
?
功能:設置或給出瀏覽器窗口中狀態欄的當前顯示信息。
?
小技巧:可以使用該屬性設置瀏覽器窗口狀態欄信息。
?
2. statusbar屬性
?
語法格式:window.statusbar.屬性
?
功能:statusbar屬性本身也是一個對象,用于訪問它自已的visible屬性從而確定狀態欄是否可見。
?
注:ie5.5瀏覽器不支持該屬性。
?
3. statusbar.visible屬性
?
語法格式: window.statusbar.visible
?
功能:檢查狀態欄是否可見,如果可見則返回true,反之返回false。
?
注:ie5.5瀏覽器不支持該屬性。
?
4. defaultstatus屬性
?
語法格式:window.defaultstatus[=字符串]
?
功能:defaultstatus屬性值是瀏覽器窗中狀態欄的默認顯示信息
?
5.location屬性
?
語法格式:window.location=url
?
功能:給出當前窗口的url信息或指定打開窗口的url。
?
6. locationbar屬性
?
語法格式:window.locationbar.屬性
?
功能:locationbar屬性也可以看成是一個子對象,這個屬性用來獲取它自已的visible屬性來確定位置欄是否可見。 到目前為止,該屬性只有一個子屬性:visible。
?
注:ie5.5不支持該屬性。
?
7. locationbar.visible屬性
?
語法格式:window.locationbar.visible
?
功能:返回位置欄是否可見,如果可見返回true,反之返回false。
?
注:ie5.5不支持該屬性。
?
8. self屬性
?
語法格式:window.self.方法
?
window.self.屬性
?
功能:該屬性包含當前窗口的標志,利用這個屬性,可以保證在多個窗口被打開的情況下,正確調用當前窗口內的函數或屬性而不會發生混亂。
?
9. name屬性
?
語法格式: window.name=名稱
?
功能:返回窗口名稱,這個名稱是由window.open()方法創建新窗口時給定的。在javascript1.0版本中,這個屬性只能用于讀取窗口名稱,而到了javascript1.1版本時,可以用這個屬性給一個不是用window.open()方法創建的窗口指定一個名稱。
?
10. closed屬性
?
語法格式:window.closed
?
功能:closed屬性用于返回指定窗口的實例是否已經關閉,如果關閉,返回true ,反之返回flase。
?
11. frames屬性
?
語法格式:window.frames[“框架名稱”]
?
window.frames[數值]
?
功能:frames屬性是一個數組,用來存儲文檔中每一個由元素創建的子窗口(框架)實例,其中的下標即可以是次序號也可以是用frame元素的name屬性指定的名稱來得到并使用。
?
12. frames.length屬性
?
語法格式: window.frames.length
?
功能:frames.length屬性用于給出文檔中子窗口(框架)實例的個數。
?
13. length屬性
?
語法格式:window.length
?
功能:length屬性返回一個窗口內的子窗口數目,該屬性與window.frame.length屬性的值相同。
?
14. document屬性
?
語法格式:window.document.事件 window.document.方法 window.document.屬性
?
功能:window對象的子對象document是javascript的核心對象,在腳本中遇到body元素時創建一個實例。
?
15. history屬性
?
語法格式: window.history[數值] window.history.方法() window.history.屬性
?
window對象的子對象history是javascript的核心對象之一,該屬性包含了一個已訪問過頁面的名稱和url的數組。
?
16. innerheight屬性
?
語法格式:window.innerheight=數值
?
功能:返回或指定瀏覽器窗口中文檔的像素高度,這個高度不包括任何工具欄和組成窗口的頁面修飾高度。
?
注:ie5.5不支持該屬性。
?
17. innerwidth屬性
?
語法格式:window.innerheight=數值
?
功能:返回或指定瀏覽器窗口中文檔的像素寬度,這個寬度不包括任何工具欄和組成窗口的頁面修飾寬度。
?
注:ie5.5不支持該屬性。
?
18. menubar屬性
?
語法格式:window.menubar.屬性
?
功能:menubar屬性也可以看成是一個子對象,這個屬性用來獲取它自已的visible屬性來確定菜單欄是否可見。到目前為止,該屬性只有一個子屬性:visible。
?
注:ie5.5不支持該屬性。
?
19. menubar.visible屬性
?
語法格式:window.menubar.visible
?
功能:menubar.visible屬性用于返回菜單欄是否可見,如果可見返回true,反之返回false。
?
注:ie5.5不支持該屬性。
?
20. opener屬性
?
語法格式:window.opener window.opener.方法 window.opener.屬性
?
功能:opener屬性與打開該窗口的父窗口相聯系,當訪問子窗口中operer屬性時,返回的是父窗口。通過該屬性,可以使用父窗口對象中的方法和屬性。
?
21. outerheight屬性
?
語法格式:window.outerheight
?
功能:outerheight屬性用于訪問瀏覽器窗口的像素高度,該高度包括工具欄和裝飾邊的高度。
?
注:ie5.5不支持該屬性。
?
22. outerwidth屬性
?
語法格式:window.outerwidth
?
功能:outerwidth屬性用于訪問瀏覽器窗口的像素寬度,該寬度包括工具欄和裝飾邊的寬度。
?
注:ie5.5不支持該屬性。
?
23. pagexoffset屬性
?
語法格式:window.pagexoffset=數值
?
功能:指定瀏覽器窗口中文檔左上角在窗口中的當前水平像素位置。在利用moveto移動之前,可以通過該屬性來決定是否需要移動窗口。因為該屬性返回了可見文檔相對整個頁面的當前位置。
?
注:ie5.5不支持該屬性。
?
24. pageyoffset屬性
?
語法格式:window.pageyoffset=數值
?
功能:指定瀏覽器窗口中文檔左上角在窗口中的當前垂直像素位置。在利用moveto移動之前,可以通過該屬性來決定是否需要移動窗口。因為該屬性返回了可見文檔相對整個頁面的當前位置。
?
注:ie5.5不支持該屬性。
?
25. parent屬性
?
語法格式:window.parent.frames[數值] window.parent.framesname
?
功能:訪問各個子窗口(多框架)所在的父窗口。
?
26. personalbar屬性
?
語法格式:window.personalbar.屬性
?
功能:personalbar屬性本身也是一個對象,用于訪問其自身的visible屬性來確定個人欄是否可見。
?
注:ie5.5不支持該屬性。
?
27. personalbar.visible屬性
?
語法格式:window.personalbar.visible
?
功能:確定個人欄是否可見,如果可見則返回true,反之返回false。
?
注:ie5.5不支持該屬性。
?
28. scrollbars屬性
?
語法格式:window.scrollbars.屬性
?
功能:scrollbars屬性本身也是一個對象,用于訪問其自身的visible屬性來確定滾動欄是否可見
?
注:ie5.5不支持該屬性。
?
29. scrollbars.visible屬性
?
語法格式:window.scrollbars.visible
?
功能:scrollbars.visible用于確定滾動欄是否可見,如果可見則返回true,反之返回false。
?
注:ie5.5不支持該屬性。
?
30. toolbar屬性
?
語法格式:window.toolbar.屬性
?
功能:toolbar屬性本身也是一個對象,用于訪問它自已的visible屬性從而確定工具欄是否可見。
?
注:ie5.5不支持該屬性。
?
31. toolbar.visible屬性
?
語法格式:window.toolbar.visible
?
功能:toolbar.visible屬性用于檢查工具欄是否可見,如果可見則返回true,反之返回false。
?
注:ie5.5不支持該屬性。
?
32. top屬性
?
語法格式:window.top.frames[數值] window.top.framename window.top.方法()
?
window.top.屬性
?
功能:window對象的top屬性用于包含所有裝入瀏覽器的子窗口(多框架)的最頂層窗口的信息。
?
轉載于:https://www.cnblogs.com/zxlasd/p/7062989.html
總結
- 上一篇: OpenCV探索之路(八):重映射与仿射
- 下一篇: xss Payload