0.Apr-08-2015 :初版
1.Jul-1*-2015 :新增ECMAScript 6簡述、修正內容
2.Oct-14-2018 :修改語法、內容,移除jQuery相關內容網頁客戶端
伺服器端
送出需求(Request)
回傳內容(Response)
前端
Frontend
後端
Backend
小建議:使用第2、3點時
建議將標籤接在</body>前
詳情請見下面釋例
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div onclick="alert('安安~');"></div>
<!--或是-->
<a href="javascript:alert('安安~');"></a>
</body>
</html><!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div></div>
<script type="text/javascript">
document.getElementByTagName('div').onclick(function(){
alert('安安~');
});
</script>
</body>
</html><!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div></div>
<script type="text/javascript" src="example_source.js"></script>
</body>
</html>document.getElementByTagName('div').onclick(function(){
alert('安安~');
});example_source.js
example_source.html
var i;
let i;
//---------------------global---------------------//
var testvara;
//等同
let testleta;
//---------------------大括號內--------------------//
if(true) var testvarb = foo;
testvarb;//<foo
if(true) let testletb = bar;
testlatb;//<error與var的差別:var宣告為全域變數(一個地方宣告,整個網頁的JavaScript都可以使用);let為區域變數(在某個區域宣告只有同層及底層可以使用)
const i = foo;
if (條件1) {
//程式碼內容1
}
else if (條件2) {
//程式碼內容2
}
else {
//程式碼內容
}switch (變數名稱) {
case 條件A:
//當變數==條件A->執行這行
break;
case 條件B:
//當變數==條件B->執行這行
break;
case 條件C:
//當變數==條件C->執行這行
break;
case 條件D:
case 條件E:
case 條件F:
//當變數==條件D、E或是F->執行這行
break;
default:
//上面都不符合時執行這行
break;
}for(i = 0, i < 10, i++){
//程式碼內容
}var abc[10];
for(var i in abc){
console.log(abc[i]);
}var abc[10];
for(let i of abc){
console.log(i);
}while (true){
//程式碼內容
}do{
//程式碼內容
} while (true)function fname(arga){
var returnVal;
//函數內容
return returnVal;
}const fname = function (arga){
var returnVal;
//函數內容
return returnVal;
}fname('安安');const fname = arga => console.log(arga);fname('安安');document.getElementById('物件ID')
//以物件的 ID 屬性選取單一元件
document.getElementsByClassName('物件的class name')
//以物件的 Class 屬性選取多個元件
document.getElementsByName('物件名稱')
//以物件的 Name 屬性選取多個元件
document.getElementsByTagName('標籤類型')
//選取多個 HTML 標籤為 "標籤類型" 的元件
document.getElementsByTagNameNS('XML命名空間', '標籤類型')
//選取多個在某個 XML命名空間 下標籤類行為 "標籤類型" 的標籤,只能在.xhtml下使用
document.querySelector('CSS Selector')
//使用CSS選擇器選取首個相符物件
document.querySelectorAll('CSS Selector')
//使用CSS選擇器選取多個相符物件一個HTML架構(註:紅色為aNode)
aNode.parentElement
aNode.priviusElementSibling
aNode.nextElementSibling
aNode.children
//1.建立物件參考
var element = document.createElement('標籤名稱');
//2.設定物件內容
element.innerHTML = 'OOXX';
//3.新增在文件中
//在後面
document.getElementById('...').appendChild(element);
//在前面
document.getElementById('...').insertBefore(element, document.getElementById('id').childNodes[0]);//1.建立物件參考
var element = document.getElementById('ID');
//2.刪除物件
element.parentNode.removeChild(element);element.innerHTML = 'foo';物件參考.style.<css屬性> = '屬性內容';var abc = function (event) {
alert('安安~');
}先定義Callback Function
詳情請見下面釋例
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div onclick="abc();"></div>
</body>
</html><!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div id="adiv"></div>
<script type="text/javascript">
document.getElementById('adiv').onclick = abc();
</script>
</body>
</html><!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div id="adiv"></div>
<script type="text/javascript">
//For other browser
if(document.getElementById('adiv').addEventListener)
document.getElementById('adiv').addEventListener('click', abc);
//For IE versions prior to IE 9
else document.getElementById('adiv').attachEvent('click', abc);
</script>
</body>
</html>跨網站指令碼攻擊(Cross-side scripting,XSS,用CSS會和層疊樣式表搞混所以使用XSS)
最初Netscape推出JavaScript時,這些工程師也發現從網頁伺服器可能會傳某些程式碼到客戶端瀏覽器的安全風險;目前許多瀏覽器也有做某些防範,擋掉了某些跨網站攻擊的風險(比如:你只是開我的網站,我就把你的FB個人資料A光光了)
不過瀏覽器擋的只是部分,我們來看個有趣的故事
故事發生在我同學身上,資訊工程系三年級上學期有堂選修叫Ajax程式設計,這堂課期末要我們交個網站,他設計了一套留言板如下
然後我另一個同學留了一個言,如下
<script>document.write(/HACK BY JIGSAW/)</script>
結果網頁就變成了這樣
後來Debug完之後...青蛙終於變回王子了
但...好日子不持久
我們來注意一下這個網頁可以由使用者建立或修改的部分有什麼吧
A:留言
↑B:
使用者
神人再度出馬...
但是如果是直接註冊新帳號的話...自己也會被攻擊阿
於是...他用另一個帳號找到留言的API......
GG WP again..................