搜尋
首頁web前端js教程JavaScript方法和技巧大全_基础知识

这篇介绍JavaScript方面的日志,我在是Clang上看到的。作者介绍挺全面的,所以转载过来让感兴趣的朋友看一下。呵呵~~~

有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为这些微不足道,不至于影响你的开发进度,但恰恰是这些你不重视的东西会浪费你很多时间,我一直以为我早在几年前就已经精通JavaScript了,直到目前,我才越来越觉得JavaScript远比我想象的复杂和强大,我开始崇拜它,就像崇拜所有OOP语言一样~
趁着节日的空隙,把有关JavaScript的方法和技巧整理下,让每个在为JavaScript而烦恼的人明白,JavaScript就这么回事!并希望JavaScript还可以成为你的朋友,让你豁然开朗,在项目中更好的应用~

适合阅读范围:对JavaScript一无所知~离精通只差一步之遥的人
基础知识:HTML


JavaScript就这么回事1:基础知识 

1 创建脚本块

1: <script> <BR>2: JavaScript code goes here <BR>3: </script> 



2 隐藏脚本代码

1: <script> <BR>2: <!-- <BR>3: document.write(“Hello”); <BR>4: // --> <BR>5: </script> 


在不支持JavaScript的浏览器中将不执行相关代码

3 浏览器不支持的时候显示

1:  



4 链接外部脚本文件

1: <script></script> 


5 注释脚本

1: // This is a comment
2: document.write(“Hello”); // This is a comment
3: /*
4: All of this
5: is a comment
6: */ 



6 输出到浏览器

1: document.write(“Hello”); 



7 定义变量

1: var myVariable = “some value”; 



8 字符串相加

1: var myString = “String1” + “String2”; 



9 字符串搜索

1: <script> <BR>2: <!-- <BR>3: var myVariable = “Hello there”; <BR>4: var therePlace = myVariable.search(“there”); <BR>5: document.write(therePlace); <BR>6: // --> <BR>7: </script> 



10 字符串替换

1: thisVar.replace(“Monday”,”Friday”); 


11 格式化字串

1: <script> <BR>2: <!-- <BR>3: var myVariable = “Hello there”; <BR>4: document.write(myVariable.big() + “<br>”); <BR>5: document.write(myVariable.blink() + “<br>”); <BR>6: document.write(myVariable.bold() + “<br>”); <BR>7: document.write(myVariable.fixed() + “<br>”); <BR>8: document.write(myVariable.fontcolor(“red”) + “<br>”); <BR>9: document.write(myVariable.fontsize(“18pt”) + “<br>”); <BR>10: document.write(myVariable.italics() + “<br>”); <BR>11: document.write(myVariable.small() + “<br>”); <BR>12: document.write(myVariable.strike() + “<br>”); <BR>13: document.write(myVariable.sub() + “<br>”); <BR>14: document.write(myVariable.sup() + “<br>”); <BR>15: document.write(myVariable.toLowerCase() + “<br>”); <BR>16: document.write(myVariable.toUpperCase() + “<br>”); <BR>17: <BR>18: var firstString = “My String”; <BR>19: var finalString = firstString.bold().toLowerCase().fontcolor(“red”); <BR>20: // --> <BR>21: </script> 



12 创建数组

1: <script> <BR>2: <!-- <BR>3: var myArray = new Array(5); <BR>4: myArray[0] = “First Entry”; <BR>5: myArray[1] = “Second Entry”; <BR>6: myArray[2] = “Third Entry”; <BR>7: myArray[3] = “Fourth Entry”; <BR>8: myArray[4] = “Fifth Entry”; <BR>9: var anotherArray = new Array(“First Entry”,”Second Entry”,”Third Entry”,”Fourth Entry”,”Fifth Entry”); <BR>10: // --> <BR>11: </script> 



13 数组排序

1: <script> <BR>2: <!-- <BR>3: var myArray = new Array(5); <BR>4: myArray[0] = “z”; <BR>5: myArray[1] = “c”; <BR>6: myArray[2] = “d”; <BR>7: myArray[3] = “a”; <BR>8: myArray[4] = “q”; <BR>9: document.write(myArray.sort()); <BR>10: // --> <BR>11: </script> 



14 分割字符串

1: <script> <BR>2: <!-- <BR>3: var myVariable = “a,b,c,d”; <BR>4: var stringArray = myVariable.split(“,”); <BR>5: document.write(stringArray[0]); <BR>6: document.write(stringArray[1]); <BR>7: document.write(stringArray[2]); <BR>8: document.write(stringArray[3]); <BR>9: // --> <BR>10: </script> 



15 弹出警告信息

1: <script> <BR>2: <!-- <BR>3: window.alert(“Hello”); <BR>4: // --> <BR>5: </script> 



16 弹出确认框

1: <script> <BR>2: <!-- <BR>3: var result = window.confirm(“Click OK to continue”); <BR>4: // --> <BR>5: </script> 



17 定义函数

1: <script> <BR>2: <!-- <BR>3: function multiple(number1,number2) { <BR>4: var result = number1 * number2; <BR>5: return result; <BR>6: } <BR>7: // --> <BR>8: </script> 



18 调用JS函数

1: Link text
2: Link text 



19 在页面加载完成后执行函数

1: 


2: Body of the page
3:  


20 条件判断

1: <script> <BR>2: <!-- <BR>3: var userChoice = window.confirm(“Choose OK or Cancel”); <BR>4: var result = (userChoice == true) ? “OK” : “Cancel”; <BR>5: document.write(result); <BR>6: // --> <BR>7: </script> 



21 指定次数循环

1: <script> <BR>2: <!-- <BR>3: var myArray = new Array(3); <BR>4: myArray[0] = “Item 0”; <BR>5: myArray[1] = “Item 1”; <BR>6: myArray[2] = “Item 2”; <BR>7: for (i = 0; i < myArray.length; i++) { <BR>8: document.write(myArray[i] + “<br>”); <BR>9: } <BR>10: // --> <BR>11: </script> 



22 设定将来执行

1: <script> <BR>2: <!-- <BR>3: function hello() { <BR>4: window.alert(“Hello”); <BR>5: } <BR>6: window.setTimeout(“hello()”,5000); <BR>7: // --> <BR>8: </script> 



23 定时执行函数

1: <script> <BR>2: <!-- <BR>3: function hello() { <BR>4: window.alert(“Hello”); <BR>5: window.setTimeout(“hello()”,5000); <BR>6: } <BR>7: window.setTimeout(“hello()”,5000); <BR>8: // --> <BR>9: </script> 



24 取消定时执行

1: <script> <BR>2: <!-- <BR>3: function hello() { <BR>4: window.alert(“Hello”); <BR>5: } <BR>6: var myTimeout = window.setTimeout(“hello()”,5000); <BR>7: window.clearTimeout(myTimeout); <BR>8: // --> <BR>9: </script> 



25 在页面卸载时候执行函数

1: 
2: Body of the page
3:  

JavaScript就这么回事2:浏览器输出 


26 访问document对象

1: <script> <BR>2: var myURL = document.URL; <BR>3: window.alert(myURL); <BR>4: </script> 



27 动态输出HTML

1: <script> <BR>2: document.write(“<p>Here's some information about this document:”); <BR>3: document.write(“<ul>”); <BR>4: document.write(“<li>Referring Document: “ + document.referrer + “”); <BR>5: document.write(“<li>Domain: “ + document.domain + “”); <BR>6: document.write(“<li>URL: “ + document.URL + “”); <BR>7: document.write(“”); <BR>8: </script> 


28 输出换行

1: document.writeln(“a”);
2: document.writeln(“b”); 



29 输出日期

1: <script> <BR>2: var thisDate = new Date(); <BR>3: document.write(thisDate.toString()); <BR>4: </script> 



30 指定日期的时区

1: <script> <BR>2: var myOffset = -2; <BR>3: var currentDate = new Date(); <BR>4: var userOffset = currentDate.getTimezoneOffset()/60; <BR>5: var timeZoneDifference = userOffset - myOffset; <BR>6: currentDate.setHours(currentDate.getHours() + timeZoneDifference); <BR>7: document.write(“The time and date in Central Europe is: “ + currentDate.toLocaleString()); <BR>8: </script> 


31 设置日期输出格式

1: <script> <BR>2: var thisDate = new Date(); <BR>3: var thisTimeString = thisDate.getHours() + “:” + thisDate.getMinutes(); <BR>4: var thisDateString = thisDate.getFullYear() + “/” + thisDate.getMonth() + “/” + thisDate.getDate(); <BR>5: document.write(thisTimeString + “ on “ + thisDateString); <BR>6: </script> 


32 读取URL参数

1: <script> <BR>2: var urlParts = document.URL.split(“?”); <BR>3: var parameterParts = urlParts[1].split(“&”); <BR>4: for (i = 0; i < parameterParts.length; i++) { <BR>5: var pairParts = parameterParts[i].split(“=”); <BR>6: var pairName = pairParts[0]; <BR>7: var pairValue = pairParts[1]; <BR>8: document.write(pairName + “ :“ +pairValue ); <BR>9: } <BR>10: </script> 

你还以为HTML是无状态的么?

33 打开一个新的document对象

1: <script> <BR>2: function newDocument() { <BR>3: document.open(); <BR>4: document.write(“<p>This is a New Document.”); <BR>5: document.close(); <BR>6: } <BR>7: </script> 



34 页面跳转

1: <script> <BR>2: window.location = “http://www.liu21st.com/”; <BR>3: </script> 



35 添加网页加载进度窗口

1: 
2: 
3: <script> <BR>4: var placeHolder = window.open('holder.html','placeholder','width=200,height=200'); <BR>5: </script>
6: The Main Page
7: 
8: 
9: 

This is the main page


10: 
11:  



JavaScript就这么回事3:图像 



36 读取图像属性

1: JavaScript方法和技巧大全_基础知识
2: Width
3: 


37 动态加载图像

1: <script> <BR>2: myImage = new Image; <BR>3: myImage.src = “Tellers1.jpg”; <BR>4: </script> 


38 简单的图像替换

1: <script> <BR>2: rollImage = new Image; <BR>3: rollImage.src = “rollImage1.jpg”; <BR>4: defaultImage = new Image; <BR>5: defaultImage.src = “image1.jpg”; <BR>6: </script>
7: 8: onMouseOut=”document.myImage.src = defaultImage.src;”>
9: JavaScript方法和技巧大全_基础知识 


39 随机显示图像

1: <script> <BR>2: var imageList = new Array; <BR>3: imageList[0] = “image1.jpg”; <BR>4: imageList[1] = “image2.jpg”; <BR>5: imageList[2] = “image3.jpg”; <BR>6: imageList[3] = “image4.jpg”; <BR>7: var imageChoice = Math.floor(Math.random() * imageList.length); <BR>8: document.write(‘<img src="/static/imghwm/default1.png" data-src="http://img.sxsky.net/it//”image1.jpg" class="lazy" src=”' + imageList[imageChoice] + ‘“ alt="JavaScript方法和技巧大全_基础知识" >'); <BR>9: </script> 


40 函数实现的图像替换

1: <script> <BR>2: var source = 0; <BR>3: var replacement = 1; <BR>4: function createRollOver(originalImage,replacementImage) { <BR>5: var imageArray = new Array; <BR>6: imageArray[source] = new Image; <BR>7: imageArray[source].src = originalImage; <BR>8: imageArray[replacement] = new Image; <BR>9: imageArray[replacement].src = replacementImage; <BR>10: return imageArray; <BR>11: } <BR>12: var rollImage1 = createRollOver(“image1.jpg”,”rollImage1.jpg”); <BR>13: </script>
14: 
15: onMouseOut=”document.myImage1.src = rollImage1[source].src;”>
16: JavaScript方法和技巧大全_基础知识
17: 
 


41 创建幻灯片

1: <script> <BR>2: var imageList = new Array; <BR>3: imageList[0] = new Image; <BR>4: imageList[0].src = “image1.jpg”; <BR>5: imageList[1] = new Image; <BR>6: imageList[1].src = “image2.jpg”; <BR>7: imageList[2] = new Image; <BR>8: imageList[2].src = “image3.jpg”; <BR>9: imageList[3] = new Image; <BR>10: imageList[3].src = “image4.jpg”; <BR>11: function slideShow(imageNumber) { <BR>12: document.slideShow.src = imageList[imageNumber].src; <BR>13: imageNumber += 1; <BR>14: if (imageNumber < imageList.length) { <BR>15: window.setTimeout(“slideShow(“ + imageNumber + “)”,3000); <BR>16: } <BR>17: } <BR>18: </script>
19: 
20: 
21: JavaScript方法和技巧大全_基础知识 


42 随机广告图片

1: <script> <BR>2: var imageList = new Array; <BR>3: imageList[0] = “image1.jpg”; <BR>4: imageList[1] = “image2.jpg”; <BR>5: imageList[2] = “image3.jpg”; <BR>6: imageList[3] = “image4.jpg”; <BR>7: var urlList = new Array; <BR>8: urlList[0] = “http://some.host/”; <BR>9: urlList[1] = “http://another.host/”; <BR>10: urlList[2] = “http://somewhere.else/”; <BR>11: urlList[3] = “http://right.here/”; <BR>12: var imageChoice = Math.floor(Math.random() * imageList.length); <BR>13: document.write(‘<a href=”' + urlList[imageChoice] + ‘“><img src="/static/imghwm/default1.png" data-src="http://img.sxsky.net/it//”login.gif" class="lazy" src=”' + imageList[imageChoice] + ‘“ alt="JavaScript方法和技巧大全_基础知识" >'); <BR>14: </script> 

JavaScript就这么回事4:表单 


还是先继续写完JS就这么回事系列吧~
43 表单构成

1: 

2: 
3: 
7: 

8: 
9: 
 


44 访问表单中的文本框内容

1: 

2: 
3: 

4: Check Text Field 


45 动态复制文本框内容

1: 

2: Enter some Text: 

3: Copy Text: 
4: 

5: 6: document.myForm.myText.value;”>Copy Text Field 


46 侦测文本框的变化

1: 

2: Enter some Text: 
3: 
 


47 访问选中的Select

1: 

2: 
7: 

8: Check Selection List 


48 动态增加Select项

1: 

2: 
6: 

7: <script> <BR>8: document.myForm.mySelect.length++; <BR>9: document.myForm.mySelect.options[document.myForm.mySelect.length - 1].text = “3”; <BR>10: document.myForm.mySelect.options[document.myForm.mySelect.length - 1].value = “Third Choice”; <BR>11: </script> 


49 验证表单字段

1: <script> <BR>2: function checkField(field) { <BR>3: if (field.value == “”) { <BR>4: window.alert(“You must enter a value in the field”); <BR>5: field.focus(); <BR>6: } <BR>7: } <BR>8: </script>
9: 

10: Text Field: 
11: 

12: 
 


50 验证Select项

1: function checkList(selection) { 
2: if (selection.length == 0) { 
3: window.alert(“You must make a selection from the list.”);
4: return false;
5: }
6: return true;
7: } 


51 动态改变表单的action

1: 

2: Username: 

3: Password: 

4: 
5: 
6: 
7: 
 


52 使用图像按钮

1: 

2: Username: 

3: Password: 

4: 
5: 

6: 


53 表单数据的加密

1: <script> <BR>2: <!-- <BR>3: function encrypt(item) { <BR>4: var newItem = ''; <BR>5: for (i=0; i < item.length; i++) { <BR>6: newItem += item.charCodeAt(i) + '.'; <BR>7: } <BR>8: return newItem; <BR>9: } <BR>10: function encryptForm(myForm) { <BR>11: for (i=0; i < myForm.elements.length; i++) { <BR>12: myForm.elements[i].value = encrypt(myForm.elements[i].value); <BR>13: } <BR>14: } <BR>15: <BR>16: //--> <BR>17: </script>
18: 

19: Enter Some Text: 
20: 
 




JavaScript就这么回事5:窗口和框架 


54 改变浏览器状态栏文字提示

1: <script> <BR>2: window.status = “A new status message”; <BR>3: </script> 


55 弹出确认提示框

1: <script> <BR>2: var userChoice = window.confirm(“Click OK or Cancel”); <BR>3: if (userChoice) { <BR>4: document.write(“You chose OK”); <BR>5: } else { <BR>6: document.write(“You chose Cancel”); <BR>7: } <BR>8: </script> 


56 提示输入

1: <script> <BR>2: var userName = window.prompt(“Please Enter Your Name”,”Enter Your Name Here”); <BR>3: document.write(“Your Name is “ + userName); <BR>4: </script> 


57 打开一个新窗口

1: //打开一个名称为myNewWindow的浏览器新窗口
2: <script> <BR>3: window.open(“http://www.liu21st.com/”,”myNewWindow”); <BR>4: </script> 


58 设置新窗口的大小

1: <script> <BR>2: window.open(“http://www.liu21st.com/”,”myNewWindow”,'height=300,width=300'); <BR>3: </script> 


59 设置新窗口的位置

1: <script> <BR>2: window.open(“http://www.liu21st.com/”,”myNewWindow”,'height=300,width=300,left=200,screenX=200,top=100,screenY=100'); <BR>3: </script> 


60 是否显示工具栏和滚动栏

1: <script> <BR>2: window.open(“http: <br><br><BR>61 是否可以缩放新窗口的大小 <br><br>1: <script language=”JavaScript”> <BR>2: window.open('http://www.liu21st.com/' , 'myNewWindow', 'resizable=yes' );</script> 


62 加载一个新的文档到当前窗口

1: Open New Document 


63 设置页面的滚动位置

1: <script> <BR>2: if (document.all) { //如果是IE浏览器则使用scrollTop属性 <BR>3: document.body.scrollTop = 200; <BR>4: } else { //如果是NetScape浏览器则使用pageYOffset属性 <BR>5: window.pageYOffset = 200; <BR>6: }</script> 


64 在IE中打开全屏窗口

1: Open a full-screen window 


65 新窗口和父窗口的操作

1: <script> <BR>2: //定义新窗口 <BR>3: var newWindow = window.open(“128a.html”,”newWindow”); <BR>4: newWindow.close(); //在父窗口中关闭打开的新窗口 <BR>5: </script>
6: 在新窗口中关闭父窗口
7: window.opener.close() 


66 往新窗口中写内容

1: <script> <BR>2: var newWindow = window.open(“”,”newWindow”); <BR>3: newWindow.document.open(); <BR>4: newWindow.document.write(“This is a new window”); <BR>5: newWIndow.document.close(); <BR>6: </script> 


67 加载页面到框架页面

1: 
2: 
3: 
4: 
5: 在frame1中加载frame2中的页面
6: parent.frame2.document.location = “135b.html”; 


68 在框架页面之间共享脚本
如果在frame1中html文件中有个脚本

1: function doAlert() { 
2: window.alert(“Frame 1 is loaded”);
3: } 

那么在frame2中可以如此调用该方法

1: 
2: This is frame 2.
3:  


69 数据公用
可以在框架页面定义数据项,使得该数据可以被多个框架中的页面公用

1: <script> <BR>2: var persistentVariable = “This is a persistent value”; <BR>3: </script>
4: 
5: 
6: 
7:  


这样在frame1和frame2中都可以使用变量persistentVariable 
70 框架代码库
根据以上的一些思路,我们可以使用一个隐藏的框架页面来作为整个框架集的代码库

1: 
2: 
3: 
4: 
5: 
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在JavaScript中替換字符串字符在JavaScript中替換字符串字符Mar 11, 2025 am 12:07 AM

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

構建您自己的Ajax Web應用程序構建您自己的Ajax Web應用程序Mar 09, 2025 am 12:11 AM

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

如何創建和發布自己的JavaScript庫?如何創建和發布自己的JavaScript庫?Mar 18, 2025 pm 03:12 PM

文章討論了創建,發布和維護JavaScript庫,專注於計劃,開發,測試,文檔和促銷策略。

如何在瀏覽器中優化JavaScript代碼以進行性能?如何在瀏覽器中優化JavaScript代碼以進行性能?Mar 18, 2025 pm 03:14 PM

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

如何使用瀏覽器開發人員工具有效調試JavaScript代碼?如何使用瀏覽器開發人員工具有效調試JavaScript代碼?Mar 18, 2025 pm 03:16 PM

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

jQuery矩陣效果jQuery矩陣效果Mar 10, 2025 am 12:52 AM

將矩陣電影特效帶入你的網頁!這是一個基於著名電影《黑客帝國》的酷炫jQuery插件。該插件模擬了電影中經典的綠色字符特效,只需選擇一張圖片,插件就會將其轉換為充滿數字字符的矩陣風格畫面。快來試試吧,非常有趣! 工作原理 插件將圖片加載到畫布上,讀取像素和顏色值: data = ctx.getImageData(x, y, settings.grainSize, settings.grainSize).data 插件巧妙地讀取圖片的矩形區域,並利用jQuery計算每個區域的平均顏色。然後,使用

如何構建簡單的jQuery滑塊如何構建簡單的jQuery滑塊Mar 11, 2025 am 12:19 AM

本文將引導您使用jQuery庫創建一個簡單的圖片輪播。我們將使用bxSlider庫,它基於jQuery構建,並提供許多配置選項來設置輪播。 如今,圖片輪播已成為網站必備功能——一圖胜千言! 決定使用圖片輪播後,下一個問題是如何創建它。首先,您需要收集高質量、高分辨率的圖片。 接下來,您需要使用HTML和一些JavaScript代碼來創建圖片輪播。網絡上有很多庫可以幫助您以不同的方式創建輪播。我們將使用開源的bxSlider庫。 bxSlider庫支持響應式設計,因此使用此庫構建的輪播可以適應任何

如何使用Angular上傳和下載CSV文件如何使用Angular上傳和下載CSV文件Mar 10, 2025 am 01:01 AM

數據集對於構建API模型和各種業務流程至關重要。這就是為什麼導入和導出CSV是經常需要的功能。在本教程中,您將學習如何在Angular中下載和導入CSV文件

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具