js客户端(js客户端招聘)

http://www.itjxue.com  2023-01-28 05:11  来源:未知  点击次数: 

客户端js和服务器端js的区别

js一般来说有3块的内容:

ECMAScript描述语法和基本对象;

文档对象模型(DOM),描述处理网页内容的方法和接口,html

浏览器对象模型(BOM),描述浏览器的交互方法和接口。

客户端的js一般3个部分都要用到,2,3就是对页面内容处理。

服务端js一般只用到第一个部分。和其他服务端语言一样对数据进行处理。

这绝不是说服务端开发更简单,而是对于语言内容来说。

客户端与JS交互

客户端在做完基本UI界面之后,往往都会向JS与客户端交互上发展,简单来说就是:客户端调用JS方法,JS调用客户端方法,这样做对app灵活性方面有了极大提升。

网上比较好用的第三方框架很多,比较典型的有 webviewJavaScriptBridge ,苹果自iOS7之后推出的一款框架叫 JavaScriptCore

JavaScriptCore 是在webview的didFinishLoad里面注入JS语句,完成两端的相互调用,我查过一些资料,对这个框架用着不舒服,于是就转向了 webviewJavaScriptBridge ,下面我就着重记录一下自己在开发这块功能时候的笔记和想法。

webviewJavaScriptBridge 兼容iOS6之前和之后,同样也兼容了iOS8推出的 WKWebView ,我想用过 WKWebView 的人都知道它比之 UIWebView 的优势, webviewJavaScriptBridge 能兼容 WKWebView 是再好不过了。

往简单了说, webviewJavaScriptBridge 的使用主要是靠 WKWebViewJavascriptBridge 来连接OC端(也即客户端)与JS端,这里我们需要配合服务端来做,规定好方法名,调用 registerHandler 和 callHandler 就可以了。

[self.bridge setWebViewDelegate:self]; 这个可要可不要,有时候可能需要在webview代理方法中处理一些UI上的显示问题,所以我这里保留了。但是这样的话就可能造成循环引用,因为self持有webview,而webview又持有self,所以我在这里用了weak修饰webview就可以了。

简单来说,在客户端只需要在合适的地方调用

两端的调用总体来说就是这样,是不是很方便呢?注意要和前端同事协调好方法名

web前端开发中js如何调用客户端webview中自定义的方法

实现的原理很简单,就是借助客户端webview的WebViewJavascriptBridge对象的callHandler方法和registerHandler方法进行数据传输,其中callHander用于js调用客户端的方法,registerHandler用于调用客户端调用js的方法,具体实现方法如下:

js判断客户端是pc端还是移动端

Js判断客户端是否为PC还是手持移动设备

方法一

function IsPC(){?

? ? var userAgentInfo = navigator.userAgent;

? ? var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");?

? ? var flag = true;?

for (var v = 0; v

if(userAgentInfo.indexOf(Agents[v]) 0) { flag = false; break; }

? ? }?

? ? return flag;?

? }

if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {

? ? //alert(navigator.userAgent);?

? ? window.location.href ="iPhone.html";

} else if (/(Android)/i.test(navigator.userAgent)) {

? ? //alert(navigator.userAgent);

? ? window.location.href ="Android.html";

} else {

? ? window.location.href ="pc.html";

};

方法二

var browser={

? ? versions:function(){

? ? ? ? ? var u = navigator.userAgent, app = navigator.appVersion;

? ? ? ? ? return {//移动终端浏览器版本信息

? ? ? ? ? ? ? ? trident: u.indexOf('Trident') -1, //IE内核

? ? ? ? ? ? ? ? presto: u.indexOf('Presto') -1, //opera内核

? ? ? ? ? ? ? ? webKit: u.indexOf('AppleWebKit') -1, //苹果、谷歌内核

? ? ? ? ? ? ? ? gecko: u.indexOf('Gecko') -1 u.indexOf('KHTML') == -1, //火狐内核

? ? ? ? ? ? ? ? mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端

? ? ? ? ? ? ? ? ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端

? ? ? ? ? ? ? ? android: u.indexOf('Android') -1 || u.indexOf('Linux') -1, //android终端或者uc浏览器

? ? ? ? ? ? ? ? iPhone: u.indexOf('iPhone') -1 , //是否为iPhone或者QQHD浏览器

? ? ? ? ? ? ? ? iPad: u.indexOf('iPad') -1, //是否iPad?

? ? ? ? ? ? ? ? webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部

? ? ? ? ? ? ? ? weixin: u.indexOf('MicroMessenger') -1, //是否微信

? ? ? ? ? ? ? ? qq: u.match(/\sQQ/i) == " qq" //是否QQ

? ? ? ? ? ? };

? ? ? ? }(),

? ? ? ? language:(navigator.browserLanguage || navigator.language).toLowerCase()

}

? if(browser.versions.mobile || browser.versions.ios || browser.versions.android ||

? browser.versions.iPhone || browser.versions.iPad){?

? window.location = "";

? }

方法三: 摘自im- qq

var os = function() {

? ? var ua = navigator.userAgent,

? ? isWindowsPhone = /(?:Windows Phone)/.test(ua),

? ? isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,

? ? isAndroid = /(?:Android)/.test(ua),

? ? isFireFox = /(?:Firefox)/.test(ua),

? ? isChrome = /(?:Chrome|CriOS)/.test(ua),

? ? isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid !/(?:Mobile)/.test(ua)) || (isFireFox /(?:Tablet)/.test(ua)),

? ? isPhone = /(?:iPhone)/.test(ua) !isTablet,

? ? isPc = !isPhone !isAndroid !isSymbian;

? ? return {

? ? ? ? ? isTablet: isTablet,

? ? ? ? ? isPhone: isPhone,

? ? ? ? ? isAndroid : isAndroid,

? ? ? ? ? isPc : isPc

? ? };

}();

使用方法

if(os.isAndroid || os.isPhone){

alert("-----");

}

方法四:

if(/AppleWebKit.*mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){

if(window.location.href.indexOf("?mobile")0){

try{

if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){

window.location.href="手机页面";

}elseif(/iPad/i.test(navigator.userAgent)){

window.location.href="平板页面";

}else{

window.location.href="其他移动端页面"

? ? ? ? ? ? }

}catch(e){}

? ? }

}

方法五

//平台、设备和操作系统?

varsystem ={

win:false,

mac:false,

xll:false

};?

//检测平台?

varp = navigator.platform;

system.win = p.indexOf("Win") ==0;

system.mac = p.indexOf("Mac") ==0;

system.x11 = (p =="X11") || (p.indexOf("Linux") ==0);

//跳转语句,如果是手机访问就自动跳转到caibaojian.com页面?

if(system.win||system.mac||system.xll){

}else{

window.location.href="";

}?

方法六

functionis_mobile(){

varregex_match =/(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i;

varu = navigator.userAgent;

if(null== u) {

returntrue;

? }

varresult = regex_match.exec(u);

if(null== result) {

returnfalse

}else{

returntrue

? }

}

if(is_mobile()) {

document.location.href='';//修改为你所需跳转目标页地址

}

方法7 百度webapp版

!---识别手机或电脑的js开始---

(function(){

varres = GetRequest();

varpar = res['index'];

if(par!='gfan'){

varua=navigator.userAgent.toLowerCase();

varcontains=function(a, b){

if(a.indexOf(b)!=-1){returntrue;}

? ? ? ? };

//将下面的改成你的wap手机版页面地址 如我的

vartoMobileVertion =function(){

window.location.href =''

? ? ? ? }

if(contains(ua,"ipad")||(contains(ua,"rv:1.2.3.4"))||(contains(ua,"0.0.0.0"))||(contains(ua,"8.0.552.237"))){returnfalse}

if((contains(ua,"android") contains(ua,"mobile"))||(contains(ua,"android") contains(ua,"mozilla")) ||(contains(ua,"android") contains(ua,"opera"))

||contains(ua,"ucweb7")||contains(ua,"iphone")){toMobileVertion();}

? ? }

})();

functionGetRequest(){

varurl = location.search;//获取url中"?"符后的字串

vartheRequest =newObject();

if(url.indexOf("?") !=-1) {

varstr = url.substr(1);

strs = str.split("");

for(vari =0; i strs.length; i ++) {

theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);

? ? ? }

? }

returntheRequest;

}

怎样用JS获取客户端的硬件,系统等信息(适

JavaScript 获取客户端计算机硬件及系统信息

通过WMI来实现获取客户端计算机硬件及系统信息:

复制代码代码如下:

function getSysInfo(){

var locator = new ActiveXObject ("WbemScripting.SWbemLocator");

var service = locator.ConnectServer(".");

//CPU信息

var cpu = new Enumerator (service.ExecQuery("SELECT * FROM Win32_Processor")).item();

var cpuType=cpu.Name,hostName=cpu.SystemName;

//内存信息

var memory = new Enumerator (service.ExecQuery("SELECT * FROM Win32_PhysicalMemory"));

for (var mem=[],i=0;!memory.atEnd();memory.moveNext()) mem[i++]={cap:memory.item().Capacity/1024/1024,speed:memory.item().Speed}

//系统信息

var system=new Enumerator (service.ExecQuery("SELECT * FROM Win32_ComputerSystem")).item();

var physicMenCap=Math.ceil(system.TotalPhysicalMemory/1024/1024),curUser=system.UserName,cpuCount=system.NumberOfProcessors

return {cpuType:cpuType,cpuCount:cpuCount,hostName:hostName,curUser:curUser,memCap:physicMenCap,mem:mem}

}

代码实现主要包括这几部分:

先通过new ActiveXObject ("WbemScripting.SWbemLocator"); 访问到WbemScripting对象。

通过locator.ConnectServer(".");连接我们本地电脑(.代表本地电脑,当然

也可以访问其他计算机)。

通过service.ExecQuery("SELECT * FROM Win32_Processor")这个类似sql的语句(其实系统信息也是存储在计算中一个类似数据库的文件中)获取我们需要的对象的记录集。

通过new Enumerator来创建一个可枚举的对象,下面就可以遍历取信息了。

注意:运行的前提是要修改浏览器安全设置,“允许对未标记为可安全执行的ActiveX

脚本的运行”。

(责任编辑:IT教学网)

更多

推荐通讯数据软件文章