/*
-------------------------------------------------------------------------------
文件名称:check.js
说明:JavaScript脚本,用于检查网页提交表单的输入数据
版本:1.0
*/
/*
用途:校验ip地址的格式
输入:strIP:ip地址
返回:如果通过验证返回true,否则返回false;
*/ function isIP(strIP) { if (isNull(strIP)) return false; var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正则表达式 if(re.test(strIP)) { if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true; } return false; } /*
用途:检查输入字符串是否为空或者全部都是空格
输入:str
返回:
如果全是空返回true,否则返回false
*/ function isNull( str ){ if ( str == "" ) return true; var regu = "^[ ]+$"; var re = new RegExp(regu); return re.test(str); } /*
用途:检查输入对象的值是否符合整数格式
输入:str 输入的字符串
返回:如果通过验证返回true,否则返回false
*/ function isInteger( str ){ var regu = /^[-]{0,1}[0-9]{1,}$/; return regu.test(str); } /*
用途:检查输入手机号码是否正确
输入:
s:字符串
返回:
如果通过验证返回true,否则返回false
*/ function checkMobile( s ){ var regu =/^[1][3][0-9]{9}$/; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /*
用途:检查输入字符串是否符合正整数格式
输入:
s:字符串
返回:
如果通过验证返回true,否则返回false
*/ function isNumber( s ){ var regu = "^[0-9]+$"; var re = new RegExp(regu); if (s.search(re) != -1) { return true; } else { return false; } } /*
用途:检查输入字符串是否是带小数的数字格式,可以是负数
输入:
s:字符串
返回:
如果通过验证返回true,否则返回false
*/ function isDecimal( str ){ if(isInteger(str)) return true; var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/; if (re.test(str)) { if(RegExp.$1==0&&RegExp.$2==0) return false; return true; } else { return false; } } /*
用途:检查输入对象的值是否符合端口号格式
输入:str 输入的字符串
返回:如果通过验证返回true,否则返回false
*/ function isPort( str ){ return (isNumber(str) && str<65536); } /*
用途:检查输入对象的值是否符合E-Mail格式
输入:str 输入的字符串
返回:如果通过验证返回true,否则返回false
*/ function isEmail( str ){ var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/; if(myReg.test(str)) return true; return false; } /*
用途:检查输入字符串是否符合金额格式
格式定义为带小数的正数,小数点后最多三位
输入:
s:字符串
返回:
如果通过验证返回true,否则返回false
*/ function isMoney( s ){ var regu = "^[0-9]+[\.][0-9]{0,3}$"; var re = new RegExp(regu); if (re.test(s)) { return true; } else { return false; } } /*
用途:检查输入字符串是否只由英文字母和数字和下划线组成
输入:
s:字符串
返回:
如果通过验证返回true,否则返回false
*/ function isNumberOr_Letter( s ){//判断是否是数字或字母 var regu = "^[0-9a-zA-Z\_]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /*
用途:检查输入字符串是否只由英文字母和数字组成
输入:
s:字符串
返回:
如果通过验证返回true,否则返回false
*/ function isNumberOrLetter( s ){//判断是否是数字或字母 var regu = "^[0-9a-zA-Z]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /*
用途:检查输入字符串是否只由汉字、字母、数字组成
输入:
value:字符串
返回:
如果通过验证返回true,否则返回false
*/ function isChinaOrNumbOrLett( s ){//判断是否是汉字、字母、数字组成 var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /*
用途:判断是否是日期
输入:date:日期;fmt:日期格式
返回:如果通过验证返回true,否则返回false
*/ function isDate( date, fmt ) { if (fmt==null) fmt="yyyyMMdd"; var yIndex = fmt.indexOf("yyyy"); if(yIndex==-1) return false; var year = date.substring(yIndex,yIndex+4); var mIndex = fmt.indexOf("MM"); if(mIndex==-1) return false; var month = date.substring(mIndex,mIndex+2); var dIndex = fmt.indexOf("dd"); if(dIndex==-1) return false; var day = date.substring(dIndex,dIndex+2); if(!isNumber(year)||year>"2100" || year< "1900") return false; if(!isNumber(month)||month>"12" || month< "01") return false; if(day>getMaxDay(year,month) || day< "01") return false; return true; } function getMaxDay(year,month) { if(month==4||month==6||month==9||month==11) return "30"; if(month==2) if(year%4==0&&year%100!=0 || year%400==0) return "29"; else return "28"; return "31"; } /*
用途:字符1是否以字符串2结束
输入:str1:字符串;str2:被包含的字符串
返回:如果通过验证返回true,否则返回false
*/ function isLastMatch(str1,str2) { var index = str1.lastIndexOf(str2); if(str1.length==index+str2.length) return true; return false; } /*
用途:字符1是否以字符串2开始
输入:str1:字符串;str2:被包含的字符串
返回:如果通过验证返回true,否则返回false
*/ function isFirstMatch(str1,str2) { var index = str1.indexOf(str2); if(index==0) return true; return false; } /*
用途:字符1是包含字符串2
输入:str1:字符串;str2:被包含的字符串
返回:如果通过验证返回true,否则返回false
*/ function isMatch(str1,str2) { var index = str1.indexOf(str2); if(index==-1) return false; return true; } /*
用途:检查输入的起止日期是否正确,规则为两个日期的格式正确,
且结束如期>=起始日期
输入:
startDate:起始日期,字符串
endDate:结束如期,字符串
返回:
如果通过验证返回true,否则返回false
*/ function checkTwoDate( startDate,endDate ) { if( !isDate(startDate) ) { alert("起始日期不正确!"); return false; } else if( !isDate(endDate) ) { alert("终止日期不正确!"); return false; } else if( startDate > endDate ) { alert("起始日期不能大于终止日期!"); return false; } return true; } /*
用途:检查输入的Email信箱格式是否正确
输入:
strEmail:字符串
返回:
如果通过验证返回true,否则返回false
*/ function checkEmail(strEmail) { //var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/; var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/; if( emailReg.test(strEmail) ){ return true; }else{ alert("您输入的Email地址格式不正确!"); return false; } } /*
用途:检查输入的电话号码格式是否正确
输入:
strPhone:字符串
返回:
如果通过验证返回true,否则返回false
*/ function checkPhone( strPhone ) { var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/; var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/; var prompt = "您输入的电话号码不正确!" if( strPhone.length > 9 ) { if( phoneRegWithArea.test(strPhone) ){ return true; }else{ alert( prompt ); return false; } }else{ if( phoneRegNoArea.test( strPhone ) ){ return true; }else{ alert( prompt ); return false; } } } /*
用途:检查复选框被选中的数目
输入:
checkboxID:字符串
返回:
返回该复选框中被选中的数目
*/ function checkSelect( checkboxID ) { var check = 0; var i=0; if( document.all(checkboxID).length > 0 ) { for( i=0; i<document.all(checkboxID).length; i++ ) { if( document.all(checkboxID).item( i ).checked ) { check += 1; } } }else{ if( document.all(checkboxID).checked ) check = 1; } return check; } function getTotalBytes(varField) { if(varField == null) return -1; var totalCount = 0; for (i = 0; i< varField.value.length; i++) { if (varField.value.charCodeAt(i) > 127) totalCount += 2; else totalCount++ ; } return totalCount; } function getFirstSelectedValue( checkboxID ){ var value = null; var i=0; if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ){ if( document.all(checkboxID).item( i ).checked ){ value = document.all(checkboxID).item(i).value; break; } } } else { if( document.all(checkboxID).checked ) value = document.all(checkboxID).value; } return value; } function getFirstSelectedIndex( checkboxID ){ var value = -2; var i=0; if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ) { if( document.all(checkboxID).item( i ).checked ) { value = i; break; } } } else { if( document.all(checkboxID).checked ) value = -1; } return value; } function selectAll( checkboxID,status ){ if( document.all(checkboxID) == null) return; if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ){ document.all(checkboxID).item( i ).checked = status; } } else { document.all(checkboxID).checked = status; } } function selectInverse( checkboxID ) { if( document.all(checkboxID) == null) return; if( document.all(checkboxID).length > 0 ) { for( i=0; i<document.all(checkboxID).length; i++ ) { document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked; } } else { document.all(checkboxID).checked = !document.all(checkboxID).checked; } } function checkDate( value ) { if(value=='') return true; if(value.length!=8 || !isNumber(value)) return false; var year = value.substring(0,4); if(year>"2100" || year< "1900") return false; var month = value.substring(4,6); if(month>"12" || month< "01") return false; var day = value.substring(6,8); if(day>getMaxDay(year,month) || day< "01") return false; return true; } /*
用途:检查输入的起止日期是否正确,规则为两个日期的格式正确或都为空
且结束日期>=起始日期
输入:
startDate:起始日期,字符串
endDate: 结束日期,字符串
返回:
如果通过验证返回true,否则返回false
*/ function checkPeriod( startDate,endDate ) { if( !checkDate(startDate) ) { alert("起始日期不正确!"); return false; } else if( !checkDate(endDate) ) { alert("终止日期不正确!"); return false; } else if( startDate > endDate ) { alert("起始日期不能大于终止日期!"); return false; } return true; } /*
用途:检查证券代码是否正确
输入:
secCode:证券代码
返回:
如果通过验证返回true,否则返回false
*/ function checkSecCode( secCode ) { if( secCode.length !=6 ){ alert("证券代码长度应该为6位"); return false; } if(!isNumber( secCode ) ){ alert("证券代码只能包含数字"); return false; } return true; } /**************************************************** function:cTrim(sInputString,iType) description:字符串去空格的函数 parameters:iType:1=去掉字符串左边的空格 2=去掉字符串左边的空格 0=去掉字符串左边和右边的空格 return value:去掉空格的字符串 ****************************************************/ function cTrim(sInputString,iType) { var sTmpStr = ' '; var i = -1; if(iType == 0 || iType == 1) { while(sTmpStr == ' ') { ++i; sTmpStr = sInputString.substr(i,1); } sInputString = sInputString.substring(i); } if(iType == 0 || iType == 2) { sTmpStr = ' '; i = sInputString.length; while(sTmpStr == ' ') { --i; sTmpStr = sInputString.substr(i,1); } sInputString = sInputString.substring(0,i+1); } return sInputString; } /*
-------------------------------------------------------------------------------
说明:JavaScript脚本,验证表单中的数据项 begin
-------------------------------------------------------------------------------
*/ function checkForm(objFrm){ var len = 0; len = objFrm.elements.length; var i = 0; var objCheck; //文本框 for(i = 0; i < len; i ++){ objCheck = objFrm.elements[i]; if(objCheck.type =="text" && !f_checkTextValid(objCheck) ){ return false; } } //下拉框 for(i = 0; i < len; i ++){ objCheck = objFrm.elements[i]; if(objCheck.type =="select-one" && !f_checkSelectValid(objCheck) ){ return false; } } //时间段有效 if( f_checkStartAndEndDate(objFrm) == false) return false; return true; } function f_checkSelectValid(obj){ //alert("check select"); if(obj.options.length <= 0){ alert("下拉选框无数据!"); return false; } return true; } function f_checkStartAndEndDate(frm){ var len = frm.elements.length; if(len == null && len == 0) return true; var i=0; var temp; var objCheck; var objStartDate; var objEndDate; //alert("start date period check"); try{ for(i=0; i< len ; i++){ objCheck = frm.elements[i]; temp = objCheck.name; if( temp.indexOf("startDate") >0 ||temp.indexOf("beginDate")>0 ) objStartDate = objCheck; if( temp.indexOf("endDate") > 0 ) objEndDate = objCheck; } //alert(objStartDate.value); //alert(objEndDate.value); if(objStartDate.value==null || objStartDate.value =="" || objStartDate.value ==null || objStartDate.value ==""){ return true; } return checkTwoDate(objStartDate.value, objEndDate.value); //alert("end date period check"); }catch(E){} return true; } function f_checkTextValid(obj){ //不能为空 if(obj.getAttribute("isNeed") != null){ if(f_isNotNull(obj) == false) return false; } //不能超过长度 if(obj.getAttribute("maxlength") != null){ if(f_checkLength(obj) == false) return false; } var checkType =""; checkType = obj.getAttribute("checkType"); if(checkType==null||checkType=="") return true; // if (checkType.indexOf("number") >=0){ if(f_isNumber(obj) == false) return false; if(f_checkNumType(obj,checkType) == false) return false; } // if (checkType.indexOf("positive") >=0){ if(f_isNumber(obj) == false) return false; if(f_isPositive(obj)==false) return false; if(f_checkNumType(obj,checkType) == false) return false; } if (checkType.indexOf("date") >=0){ if(f_checkDate(obj) == false) return false; } /* switch(checkType){ case "number": if(f_isNumber(obj) == false) return false;break; case "date": if(f_checkDate(obj) == false) return false;break; default: } */ return true; } function f_isNotNull(obj){ if(obj.value == ""){ f_alert(obj, " 不允许为空值!"); return false; } return true; } function f_isNumber(obj){ if(isNaN(obj.value)){ f_alert(obj," 应为数值类型"); return false; } return true; } function f_checkDate(obj) { if(checkDate(obj.value) ==false){ f_alert(obj," 不是合法日期格式!"); return false; } return true; } function f_checkLength(obj){ if(getTotalBytes(obj) > Math.abs( obj.getAttribute("maxlength") ) ){ f_alert(obj," 超出长度限制!"); return false; } return true; } function f_alert(obj,alertStr){ var fielName = obj.getAttribute("fieldName"); if(fielName == null) fielName = ""; alert(fielName + "\n" +alertStr); obj.select(); obj.focus(); } function f_checkNumType(obj, numType){ //假设: 已经进行数字类型判断 var strTemp; var numpric; var numLen; var strArr; var defaultLen = 19; var defaultpric = 5; try{ if(numType == null|| numType =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric); if(numType.indexOf("(") < 0 || numType.indexOf(")") < 0 ) return f_checkNumLenPrec(obj,defaultLen, defaultpric); strTemp = numType.substr( numType.indexOf("(") + 1 ,numType.indexOf(")") - numType.indexOf("(") -1 ); if(strTemp == null||strTemp =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric); strArr = strTemp.split(","); numLen = Math.abs( strArr[0] ); numpric = Math.abs( strArr[1] ); return f_checkNumLenPrec(obj,numLen, numpric); }catch(e){ alert("in f_checkNumType = " + e); return f_checkNumLenPrec(obj,defaultLen, defaultpric); } } function f_checkNumLenPrec(obj, len, pric){ var numReg; var value = obj.value; var strValueTemp, strInt, strDec; //alert(value + "=====" + len + "====="+ pric); try{ numReg =/[\-]/; strValueTemp = value.replace(numReg, ""); strValueTemp = strValueTemp.replace(numReg, ""); //整数 if(pric==0){ numReg =/[\.]/; //alert(numReg.test(value)); if(numReg.test(value) == true){ f_alert(obj, "输入必须为整数类型!"); return false; } } if(strValueTemp.indexOf(".") < 0 ){ //alert("lennth==" + strValueTemp); if(strValueTemp.length >( len - pric)){ f_alert(obj, "整数位不能超过"+ (len - pric) +"位"); return false; } }else{ strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") ); //alert("lennth==" + strInt); if(strInt.length >( len - pric)){ f_alert(obj, "整数位不能超过"+ (len - pric) +"位"); return false; } strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length ); //alert("pric==" + strDec); if(strDec.length > pric){ f_alert(obj, "小数位不能超过"+ pric +"位"); return false; } } return true; }catch(e){ alert("in f_checkNumLenPrec = " + e); return false; } } function f_isPositive(obj){ var numReg =/[\-]/; if(numReg.test(obj.value) == true){ f_alert(obj, "必须为正数!"); return false; } return true; } /* function selectedCheckboxCount(form) 功能说明:对Form中选中的可选项计数 参数说明: form:指定的表单 */ function selectedCheckboxCount(form){ var length =0; var i=0; var count =0; eles = form.elements; while(i<eles.length){ obj= eles.item(i); //type = obj.attributes.item("type").nodeValue; type = obj.type; if(type == "checkbox"){ if(obj.checked){ count++; } } i++; } return count; } //得到字节长度 function getByteLen(str) { var l = str.length; var n = l; for ( var i=0; i<l; i++ ) if ( str.charCodeAt(i) <0 || str.charCodeAt(i) >255 ) n=n+1; return n } /*
说明:
1.清除表格中的数据(0.0 和 0)
2.如果cell中没有数据,则自动加上一个空格
3.清除空白行的checkbox
参数:
clearzero:是否清除"0"、"0.0",false不清除、true清除(默认为true)
tablename:要清除的表格名字,默认为sortTable
*/ function clear_table(clearzero,tablename) { var tobject; if(tablename==null) tobject=gmobj("sortTable"); else tobject=gmobj(tablename); //如果table未定义,则不进行过滤 if(tobject==null) return; //如果函数调用参数为空,表示要清除0、0.0;反之,不要清除0、0.0。 var clear = (clearzero==null)?true:clearzero; //清除0、0.0,填补空格 var rows = tobject.rows; var j=0; for(var i=0;i<rows.length;i++) { //取得第一个cell的属性clear,如果为1,表示该行没有数据,则清除该行所有数据 while(tobject.rows[i].cells[j] != null) { if(clear) { if(tobject.rows[i].cells[j].innerHTML==0 ||tobject.rows[i].cells[j].innerHTML==0.0||tobject.rows[i].cells[j].innerHTML=="") tobject.rows[i].cells[j].innerText=" "; } else { if (tobject.rows[i].cells[j].innerHTML=="") tobject.rows[i].cells[j].innerText=" "; } j++; } j=0; } return true; } function gmobj(mtxt) /* Get object by object name */ { if (document.getElementById) { m=document.getElementById(mtxt); } else if (document.all) { m=document.all[mtxt]; } else if (document.layers) { m=document.layers[mtxt]; } return m; } /*
-------------------------------------------------------------------------------
说明:JavaScript脚本,验证表单中的数据项 end
-------------------------------------------------------------------------------
*/
/*
用途:检查输入字符串是否是带小数的数字格式,可以是负数(并且满足规定的精度)
输入:str:字符串
l:总位数
d:小数点后位数
返回:
如果通过验证返回true,否则返回false
*/ function isDecimal( str,l,d ){ if(isInteger(str)) { if (l==null) return true; if (str<0) l--; if (str.length<=l) return true; } var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/; if (re.test(str)) { if (l==null) return true; if (d==null) d=0; if(RegExp.$1==0&&RegExp.$2==0) return false; if (RegExp.$1.length+RegExp.$2.length<=l && RegExp.$2.length<=d) return true; } return false; }

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

Dreamweaver Mac版
ビジュアル Web 開発ツール
