一般情况下,浏览器中是无法直接和本机的其他的程序进行交互的,在IE中,我们可以通过ActiveX对象的方式进行。但是这个方式只适用于IE浏览器,另一种比较通用的方式便是URL协议的方式,我们将某种URL的协议注册给某个程序来进行处理,比如将tencent://这样的协议注册给qq程序来进行处理,当浏览器需要访问这样的协议的时候就转给QQ程序进行处理。这种URL协议的方式是可以跨平台的,比如在Windows上你需要添加注册表项。
首先先看看js应该如何调用qq客户端。
window .open(" tencent://message/?uin=346915968 ")
window.open顾名思义,打开。Tencent就不用多说了吧 BAT之T。上述能直接打开qq帐号对应的对话框。由此可以知道网页上的在线客服功能是如何实现了吧。
那要是不需要打开对话框,就想要登陆qq应该如何实现呢?很简单呀:
window .open(" tencent://message/?uin=qq ") 不过调用应用这种跟黑客没什么差别的行为,浏览器一般都是禁止的,
选择允许后,
启动应用,qq客户端就会被调起。
为什么说这个呢,老板又给了个需求,想让调起qq客户端一样,想通过演示页面的一个按钮,调起售票系统的各种程序...
什么都不说了,先看看什么是自定义协议。
Pluggable Protocol,又叫URL Protocol,有时会叫Shell命令,通用的Protocol有http、ftp、mailto等,这些都是windows安装时自带的协议。
接着也实现一个简单的自己的自定义协议吧。
1,运行window,输入regedit打开注册表。 在HKEY_CLASSES_ROOT下面建一个自己起的名字的表。
用如下格式把各项值添上:
js打开qq音乐.exe
启动应用
end.
『贰』 打开电脑qq提示javascript错误怎么解决
解决办法:
1、打开IE浏览器,在IE浏览器上方的菜单栏中找到工具项,然后选择工具项中的“Internet选项”;
『叁』 如何用javascript代码启动QQ软件
<button onclick="wsh = new ActiveXObject('WScript.Shell'); wsh.Run('file:///C:/WINDOWS/system32/cmd.exe')">这是打开CMD的 </button>
把上面CMD的路径换为QQ的路径即可,如在我内的电脑上打开QQ就是容
<button onclick="wsh = new ActiveXObject('WScript.Shell'); wsh.Run('file:///D:/Program%20Files/Tencent/qq/bin/qq.exe')">这是打开qq的 </button>
『肆』 QQ上的标签这样的效果JS怎么实现呢
jquery 加几个绑定事件
1,给下面的增加绑定事件:比如下面的都有一个class属性:tag
$(".tag").live("click",function(){
//获取当前标签的名称,然后再上面的DIV里面加入他
//将当前绑定事件解除
$(this).unbind("click").addClass("自定义一个不可点击的样式名称");
});
2.上面的标签都有一个class属性:selTag
$(".selTag").live("mouseenter",function(){//标签增加鼠标移上去事件
var selTagObj = $(this);
//显示删除按钮,这个可以用样式来实现,你做一个小图标让他的位置浮动动当前的标签右边,并且增加点击事件
$("#delImg").css("left",$(this).offset().left+标签的宽度减去图片的宽度).css("top",$(this).offset().top).css("position","absolute").unbind("click").bind("click",function(){
//删除上面的标签,同时把下面的标签置为可添加
selTagObj.remove();
$("对应下面的标签").removeClass("自定义不可点击的样式名称").bind("click",function(){
把上面的绑定事件在加上,可以写一个JS方法,两边一起调用
});
});
});
『伍』 js仿QQ中对联系人向左滑动,滑出删除按钮的操作
希望能采纳
纯js实现
使用了h5的touchmove等事件,以及用js动态改变css3的translate属性来达到动画效果:
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<metaname="viewport"id="viewport"content="width=device-width,initial-scale=1">
<title>html5向左滑动删除特效</title>
<style>
*{
padding:0;
margin:0;
list-style:none;
}
header{
background:#f7483b;
border-bottom:1pxsolid#ccc
}
headerh2{
text-align:center;
line-height:54px;
font-size:16px;
color:#fff
}
.list-ul{
overflow:hidden
}
.list-li{
line-height:60px;
border-bottom:1pxsolid#fcfcfc;
position:relative;
padding:012px;
color:#666;
background:#f2f2f2;
-webkit-transform:translateX(0px);
}
.btn{
position:absolute;
top:0;
right:-80px;
text-align:center;
background:#ffcb20;
color:#fff;
width:80px
}
</style>
<script>
/*
*描述:html5苹果手机向左滑动删除特效
*/
window.addEventListener('load',function(){
varinitX;//触摸位置
varmoveX;//滑动时的位置
varX=0;//移动距离
varobjX=0;//目标对象位置
window.addEventListener('touchstart',function(event){
event.preventDefault();
varobj=event.target.parentNode;
if(obj.className=="list-li"){
initX=event.targetTouches[0].pageX;
objX=(obj.style.WebkitTransform.replace(/translateX(/g,"").replace(/px)/g,""))*1;
}
if(objX==0){
window.addEventListener('touchmove',function(event){
event.preventDefault();
varobj=event.target.parentNode;
if(obj.className=="list-li"){
moveX=event.targetTouches[0].pageX;
X=moveX-initX;
if(X>=0){
obj.style.WebkitTransform="translateX("+0+"px)";
}elseif(X<0){
varl=Math.abs(X);
obj.style.WebkitTransform="translateX("+-l+"px)";
if(l>80){
l=80;
obj.style.WebkitTransform="translateX("+-l+"px)";
}
}
}
});
}elseif(objX<0){
window.addEventListener('touchmove',function(event){
event.preventDefault();
varobj=event.target.parentNode;
if(obj.className=="list-li"){
moveX=event.targetTouches[0].pageX;
X=moveX-initX;
if(X>=0){
varr=-80+Math.abs(X);
obj.style.WebkitTransform="translateX("+r+"px)";
if(r>0){
r=0;
obj.style.WebkitTransform="translateX("+r+"px)";
}
}else{//向左滑动
obj.style.WebkitTransform="translateX("+-80+"px)";
}
}
});
}
})
window.addEventListener('touchend',function(event){
event.preventDefault();
varobj=event.target.parentNode;
if(obj.className=="list-li"){
objX=(obj.style.WebkitTransform.replace(/translateX(/g,"").replace(/px)/g,""))*1;
if(objX>-40){
obj.style.WebkitTransform="translateX("+0+"px)";
objX=0;
}else{
obj.style.WebkitTransform="translateX("+-80+"px)";
objX=-80;
}
}
})
})
</script>
</head>
<body>
<header>
<h2>消息列表</h2>
</header>
<sectionclass="list">
<ulclass="list-ul">
<liid="li"class="list-li">
<divclass="con">
你的快递到了,请到楼下签收
</div>
<divclass="btn">删除</div>
</li>
<liclass="list-li">
<divclass="con">
哇,你在干嘛,快点来啊就等你了
</div>
<divclass="btn">删除</div>
</li>
</ul>
</section>
</body>
</html>
做成zepto插件
实际项目中,我们可能有很多个地方会用到这个功能。现在我们将这个功能做成zepto插件,方便后面使用。
这个插件,我们仅实现这个功能,然后传入参数(删除按钮的样式名),让程序在js中计算所需要滑动的距离,方便复用。
zepto.touchWipe.js
/**
*zepto插件:向左滑动删除动效
*使用方法:$('.itemWipe').touchWipe({itemDelete:'.item-delete'});
*参数:itemDelete删除按钮的样式名
*/
;
(function($){
$.fn.touchWipe=function(option){
vardefaults={
itemDelete:'.item-delete',//删除元素
};
varopts=$.extend({},defaults,option);//配置选项
vardelWidth=$(opts.itemDelete).width();
varinitX;//触摸位置
varmoveX;//滑动时的位置
varX=0;//移动距离
varobjX=0;//目标对象位置
$(this).on('touchstart',function(event){
event.preventDefault();
varobj=this;
initX=event.targetTouches[0].pageX;
objX=(obj.style.WebkitTransform.replace(/translateX(/g,"").replace(/px)/g,""))*1;
if(objX==0){
$(this).on('touchmove',function(event){
event.preventDefault();
varobj=this;
moveX=event.targetTouches[0].pageX;
X=moveX-initX;
if(X>=0){
obj.style.WebkitTransform="translateX("+0+"px)";
}elseif(X<0){
varl=Math.abs(X);
obj.style.WebkitTransform="translateX("+-l+"px)";
if(l>delWidth){
l=delWidth;
obj.style.WebkitTransform="translateX("+-l+"px)";
}
}
});
}elseif(objX<0){
$(this).on('touchmove',function(event){
event.preventDefault();
varobj=this;
moveX=event.targetTouches[0].pageX;
X=moveX-initX;
if(X>=0){
varr=-delWidth+Math.abs(X);
obj.style.WebkitTransform="translateX("+r+"px)";
if(r>0){
r=0;
obj.style.WebkitTransform="translateX("+r+"px)";
}
}else{//向左滑动
obj.style.WebkitTransform="translateX("+-delWidth+"px)";
}
});
}
})
$(this).on('touchend',function(event){
event.preventDefault();
varobj=this;
objX=(obj.style.WebkitTransform.replace(/translateX(/g,"").replace(/px)/g,""))*1;
if(objX>-delWidth/2){
obj.style.transition="all0.2s";
obj.style.WebkitTransform="translateX("+0+"px)";
obj.style.transition="all0";
objX=0;
}else{
obj.style.transition="all0.2s";
obj.style.WebkitTransform="translateX("+-delWidth+"px)";
obj.style.transition="all0";
objX=-delWidth;
}
})
//链式返回
returnthis;
};
})(Zepto);
touchWipe.html
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<metaname="viewport"id="viewport"content="width=device-width,initial-scale=1">
<title>html5向左滑动删除特效</title>
<style>
*{padding:0;margin:0;list-style:none;}
header{background:#f7483b;border-bottom:1pxsolid#ccc}
headerh2{text-align:center;line-height:54px;font-size:16px;color:#fff}
.list-ul{overflow:hidden}
.list-li{line-height:60px;border-bottom:1pxsolid#fcfcfc;position:relative;padding:012px;color:#666;
background:#f2f2f2;
-webkit-transform:translateX(0px);
}
.btn{position:absolute;top:0;right:-80px;text-align:center;background:#ffcb20;color:#fff;width:80px}
</style>
</head>
<body>
<header>
<h2>消息列表</h2>
</header>
<sectionclass="list">
<ulclass="list-ul">
<liid="li"class="list-li">
<divclass="con">
你的快递到了,请到楼下签收
</div>
<divclass="btn">删除</div>
</li>
<liclass="list-li">
<divclass="con">
哇,你在干嘛,快点来啊就等你了
</div>
<divclass="btn">删除</div>
</li>
</ul>
</section>
<p>X:<spanid="X"></span></p>
<p>objX:<spanid="objX"></span></p>
<p>initX:<spanid="initX"></span></p>
<p>moveX:<spanid="moveX"></span></p>
<scripttype="text/javascript"src="
<scripttype="text/javascript"src="zepto.touchWipe.js"></script>
<scripttype="text/javascript">
$(function(){
$('.list-li').touchWipe({itemDelete:'.btn'});
});
</script>
</body>
</html>
效果:
消除BUG
到上面一步,基本实现了我们所需要的功能。但是有几个问题:
1. 右边的删除按钮点击失灵,因为span无法冒泡到大按钮上;
2. 非常严重的问题,我们给div添加了touchmove事件同时用preventDefault()屏蔽了原始的浏览器事件,导致上下滑动div的时候 页面无法滚动了!
第一个问题比较容易解决,我们把span直接去掉,将“删除”写到css中的:before里,像这样:
.itemWipe .item-delete:before {
content: '删除';
color: #fff;
}
对于第二个问题,网上说用iscroll来解决。我们这里参考手机QQ中对联系人的滑动操作。
大致原理:在滑动最开始的时候,判断是Y轴的移动多 还是 X轴的移动多。 如果是X轴移动大,则判断为滑动删除操作,我们再使用preventDefault();
以上就是本文的全部内容,希望对大家的学习有所帮助。