0 0

onclick和onblur先后10

<script id='tmpl_sessions_active_host' type='text/x-jquery-tmpl'>
<div class="remote-active-host" onclick="op_active_host_click('${code}')"> </div>
</script>

<div id="remote_activeconnection_menu">
<div id="remote_active_host_list" onblur="active_host_list_onblur()">
</div>

先说功能onclick是完成一个链接,根据code链接到不同的主机,如图

当Connection链接的时候 应该链接到另外一个页面上

点击空白处,或者点击connection都会触发onblur,onblur是收回下拉list 最终理想的界面是如下图


问题出在,当点Connecion时候,onclick不触发,所以不会出项上图的send的页面。直接跳过执行onblur,收回下拉list,截图如下


这个问题在chrome,firefox,safari,opera等浏览器都没问题,只在IE7,IE8,IE9有问题。点10次,有8次链接不成功,TMD还成为一个概率事件。
本来对JS合Jquery不熟悉,这次临时搞,一直没搞好。




问题补充:这不是我们写的 这是在改别人代码 看起来很乱 我们项目组也才刚看清头绪
asyty 写道
为啥要用onblur  用onmouthover onmouthout事件


问题补充:onmouthover onmouthout不行啊,你点上面的三角形图标,移动鼠标去点链接,还没开始点链接,list就消失了,没法点的。
asyty 写道
为啥要用onblur  用onmouthover onmouthout事件


问题补充:哪个位置加unselectable = 'on'
houfeng0923 写道
试试ie的 unselectable='on' 属性 行不行


问题补充:刚才是了onmouthout和onmouthover, 在空白处单击 哪个list不收回。
asyty 写道
为啥要用onblur  用onmouthover onmouthout事件


问题补充:嗯,应该是这个问题 我查阅了不少 也看到了这点 我这里onblur其实分两种情况,一种是下拉list出来后 点其他空白处,收回list;另一种是先onclick链接到其他页面,然后调用onblur收回list;所以不能直接调用
asyty 写道
我猜了猜,这个问题应该是IE的标签在加载触发事件的顺序和dom标准不一样
不过你的代码不太完整,所以不知道div之间是怎么包含的。。。。。

或者你干脆在onblur里调用onclick

再给你个链接参考参考http://jiataodong.blog.163.com/blog/static/3490549220101030112219514/


问题补充:谢谢你啊 我还在改
asyty 写道
我猜了猜,这个问题应该是IE的标签在加载触发事件的顺序和dom标准不一样
不过你的代码不太完整,所以不知道div之间是怎么包含的。。。。。

或者你干脆在onblur里调用onclick

再给你个链接参考参考http://jiataodong.blog.163.com/blog/static/3490549220101030112219514/


问题补充:<div>
.......
</div>

<#noparse>
<script id='tmpl_sessions_active_host' type='text/x-jquery-tmpl' >
<div class="remote-active-host" onclick="op_active_host_click('${code}')">
<span style="font-size:1.2em;color:#FFF;line-height:220%">&nbsp;&nbsp;&nbsp;&nbsp;${connection}</span>
</div>
</script>
</#noparse>

<div id="remote_activeconnection_menu">
<div id="remote_active_host_icon">
<span unselectable="on">
<img id="remote_active_icon_img" src="./images/arror_down.png" onclick="btn_activehost_icon_click()" />
</span>
</div>

<div id="remote_active_host_list" tabindex="0" style="display:none; margin-left:20px" onblur ="active_host_list_onblur()">
</div>
</div>
这算完整的了 我那个是截取了一段内容
asyty 写道
我猜了猜,这个问题应该是IE的标签在加载触发事件的顺序和dom标准不一样
不过你的代码不太完整,所以不知道div之间是怎么包含的。。。。。

或者你干脆在onblur里调用onclick

再给你个链接参考参考http://jiataodong.blog.163.com/blog/static/3490549220101030112219514/


问题补充:应该是长度和宽度的问题!经过我一番测试 在每个里面都点 之前点不出来的 还是可以成功的,必须点在正确的位置。哈哈,问题又来了,这个好改不?
asyty 写道
这算完整的了 我那个是截取了一段内容 

也就是说
<div class="remote-active-host" onclick="op_active_host_click('${code}')"> 
是放在
<div id="remote_active_host_list" tabindex="0" style="display:none; margin-left:20px" onblur ="active_host_list_onblur()">

这个div里面的喽

有没有可能是list里面的remote-active-host的div的宽度问题或者是span的宽度问题,导致ie底下鼠标click的时候没有点中div?
所以导致出现随机
引用
点10次,有8次链接不成功,TMD还成为一个概率事件






问题补充:
引用
<#noparse>
<script id='tmpl_sessions_active_host' type='text/x-jquery-tmpl' >
<div class="remote-active-host"  style="width:100%" onclick="op_active_host_click('${code}')">
<span style="style="display:inline-block;width:100%";font-size:1.2em;color:#FFF;line-height:220%">&nbsp;&nbsp;&nbsp;&nbsp;${connection}</span>
</div>
</script>
</#noparse>
这样修改后 问题还是存在
asyty 写道
引用
应该是长度和宽度的问题!经过我一番测试 在每个里面都点 之前点不出来的 还是可以成功的,必须点在正确的位置。哈哈,问题又来了,这个好改不?

这个是指css的问题 容易的啊

如果是要给span加宽度 要先把span设置为block,然后就可以设置宽度了
style="display:inline-block;width:100%",display值在不同浏览器里不太一样,百度下就有怎么写的

div就更容易了  直接style="width:100%"


问题补充:<#noparse>
<script id='tmpl_sessions_active_host' type='text/x-jquery-tmpl' >
<div class="remote-active-host"  style="width:100%" onclick="op_active_host_click('${code}')">
<span style="display:inline-block;width:100%;font-size:1.2em;color:#FFF;line-height:220%">&nbsp;&nbsp;&nbsp;&nbsp;${connection}</span>
</div>
</script>
</#noparse>
这样修改后 问题还是存在
asyty 写道
引用
应该是长度和宽度的问题!经过我一番测试 在每个里面都点 之前点不出来的 还是可以成功的,必须点在正确的位置。哈哈,问题又来了,这个好改不?

这个是指css的问题 容易的啊

如果是要给span加宽度 要先把span设置为block,然后就可以设置宽度了
style="display:inline-block;width:100%",display值在不同浏览器里不太一样,百度下就有怎么写的

div就更容易了  直接style="width:100%"


问题补充:现在存在的问题是 list列表中
点上面的链接都正常,越往列表的下面,越难点到链接的问题

asyty 写道
引用
应该是长度和宽度的问题!经过我一番测试 在每个里面都点 之前点不出来的 还是可以成功的,必须点在正确的位置。哈哈,问题又来了,这个好改不?

这个是指css的问题 容易的啊

如果是要给span加宽度 要先把span设置为block,然后就可以设置宽度了
style="display:inline-block;width:100%",display值在不同浏览器里不太一样,百度下就有怎么写的

div就更容易了  直接style="width:100%"


问题补充:嗯 谢谢你啊 问题已经解决了 是这样的
active_host_list_onblur还是会先触发 后台js是这样写的
$('#remote_active_host_list').slideUp("fast", function(){
}
因为是slideUp,收回list 这样最后几个都来不及点 所以链接不上

我在<div id='tmpl_sessions_active_connection' class="remote-active-host" onclick="op_active_host_click('${code}')"> 设置了一个id在js判断
var active_host_list_onblur = function(){
if(document.activeElement.id!="tmpl_sessions_active_connection"){
$('#remote_active_host_list').slideUp("fast", function(){
remote.activeHost_icon = 0;
$('#remote_active_host_list').blur();
$('#remote_active_icon_img').attr("src","./images/arror_down.png")
});
}
};
如果点空白处,这段执行 直接收回list;
如果点了connection,onblur就相当于失效,不执行;然后执行onclick事件
var btn_activehost_icon_click = function() {
  if($('.remote-active-host').length != 0){
if(remote.activeHost_icon == 0){
$('#remote_active_host_list').slideDown("fast", function(){
remote.activeHost_icon = 1;
$('#remote_active_host_list').focus();
$('#remote_active_icon_img').attr("src","./images/arror_up.png");
});
}
else {
$('#remote_active_host_list').slideUp("fast", function(){
remote.activeHost_icon = 0;
$('#remote_active_host_list').blur();
$('#remote_active_icon_img').attr("src","./images/arror_down.png");
});
}
  }
    else {
    remote.activeHost_icon = 0;
$('#remote_active_icon_img').attr("src","./images/arror_down.png");
    }
};
这样整个过程就OK了。非常感谢你的回答。
这个问题就在IE里面存在,IE6,7,8,9都有这个问题

asyty 写道
看了下 line-height:220% 高度去掉 220%不知道会不会出问题


问题补充:你看下我的代码 粘贴的有点乱 不工整,那个$('#remote_active_host_list').blur()事件在conclick里面最后执行
asyty 写道
另外 ie6比较奇葩 "display:inline-block"在ie6底下可能有问题 可以试试display:block;

2011年11月22日 09:44

7个答案 按时间排序 按投票排序

0 0

采纳的答案

引用
应该是长度和宽度的问题!经过我一番测试 在每个里面都点 之前点不出来的 还是可以成功的,必须点在正确的位置。哈哈,问题又来了,这个好改不?

这个是指css的问题 容易的啊

如果是要给span加宽度 要先把span设置为block,然后就可以设置宽度了
style="display:inline-block;width:100%",display值在不同浏览器里不太一样,百度下就有怎么写的

div就更容易了  直接style="width:100%"

2011年11月22日 14:39
0 0

另外 ie6比较奇葩 "display:inline-block"在ie6底下可能有问题 可以试试display:block;

2011年11月22日 16:18
0 0

看了下 line-height:220% 高度去掉 220%不知道会不会出问题

2011年11月22日 16:05
0 0

这算完整的了 我那个是截取了一段内容 

也就是说
<div class="remote-active-host" onclick="op_active_host_click('${code}')"> 
是放在
<div id="remote_active_host_list" tabindex="0" style="display:none; margin-left:20px" onblur ="active_host_list_onblur()">

这个div里面的喽

有没有可能是list里面的remote-active-host的div的宽度问题或者是span的宽度问题,导致ie底下鼠标click的时候没有点中div?
所以导致出现随机
引用
点10次,有8次链接不成功,TMD还成为一个概率事件




2011年11月22日 13:45
0 0

我猜了猜,这个问题应该是IE的标签在加载触发事件的顺序和dom标准不一样
不过你的代码不太完整,所以不知道div之间是怎么包含的。。。。。

或者你干脆在onblur里调用onclick

再给你个链接参考参考http://jiataodong.blog.163.com/blog/static/3490549220101030112219514/

2011年11月22日 11:14
0 0

试试ie的 unselectable='on' 属性 行不行

2011年11月22日 10:40
0 0

为啥要用onblur  用onmouthover onmouthout事件

2011年11月22日 10:07

相关推荐

Global site tag (gtag.js) - Google Analytics