如果页面上有iframe时,鼠标点击在iframe内时,包含iframe的document是不响应任何事件的,
例如:
$("#iframe1").click(function(){//点击iframe
alert("点击1");
});或者
$(function(){//给iframe循环绑定click事件
for(var n=1;n<=7;n++){
$("#iframe"+n).bind("click",{n:n}, clickHandler);
}
function clickHandler(event) {
var n = event.data.n;
alert("点击"+n);
}
});均行不通。
所以需要给iframe绑定类似的事件,当iframe指向的是第三方的内容时,还要考虑跨域的问题,因此通过操作iframe的document是行不通的,还好有document.activeElement可供我们使用,最终的解决方案如下:
var IframeOnClick = {
resolution: 200,
iframes: [],
interval: null,
Iframe: function() {
this.element = arguments[0];
this.cb = arguments[1];
this.hasTracked = false;
},
track: function(element, cb) {
this.iframes.push(new this.Iframe(element, cb));
if (!this.interval) {
var _this = this;
this.interval = setInterval(function() { _this.checkClick(); }, this.resolution);
}
},
checkClick: function() {
if (document.activeElement) {
var activeElement = document.activeElement;
for (var i in this.iframes) {
if (activeElement === this.iframes[i].element) { // user is in this Iframe
if (this.iframes[i].hasTracked == false) {
this.iframes[i].cb.apply(window, []);
this.iframes[i].hasTracked = true;
}
} else {
this.iframes[i].hasTracked = false;
}
}
}
}
}; 调用
IframeOnClick.track(document.getElementById("iFrame"), function() { alert('a click'); });
iphone微信页面二维码长按识别不了
微信页面上的二维码长按可以识别 我现在页面上的二维码 安卓设备可以识别 Iphone就不行 请问谁知道是怎么回事啊~
刚刚我也遇到这样的问题,然后发现是因为包住图片的外层div设置了position:fixed了,
设置成position:absolute就可以了。不知道微信自带的浏览器是怎么回事。
iphone的微信页面识别二维码要确保二维码图片和包住图片的div都没有设置position:fixed。
这个问题是ios微信客户端在处理二维码识别区时,没有把内嵌的顶栏高度计算在内…
最简单的办法是给img加padding…
#1...我这边是把二维码图片加了64px的高度就可以了...
我在页面写了一个width是100%的二维码然后隐藏起来了,识别就没问题了
解决这问题不复杂,iOS在小二维码有touchstart事件时,将二维码做一个弹出层并弹出到全屏,touchend时候关闭这个浮层,这是因为二维码的位置如果在右侧,以及太小导致的BUG。Android上面不用这么做。
腾讯浏览服务-技术指南
javascript取网页DOM自定义属性值和设置自定义属性值的通用方法
判断js中数据类型
在jQuery中响应Ctrl+S,而不是直接打开系统保存对话框
关键点:1. 键盘事件 2. 阻止默认Ctrl+S执行了两次keydown事件,第一次是按下Ctrl,第二次是按下S。Event的ctrlKey, shiftKey, metaKey这三个属性分别keydown发生时,ctrl,shift和metakey是否处于按下的状态。如果不使用这几个属性,你得结合keyup事件才能判断ctrl+s是否按下。
1)js实现
2)使用codemirror插件实现
codemirror本身十分强大,键盘监听命令很全,不过Ctrl+S这样的指令是需要手动添加的,需要在声明editor时添加下面的代码
jquery方式判断checkbox是否选中(.is(":checked"))
手机版网页 阻止屏幕滑动
给以某网站域名链接开头的a标签、超链接添加图标logo