1
icevil 2014-07-15 20:49:45 +08:00
Console 输入:
this.nv.style.position='static';this.openflag=false; 回车。 |
3
guchengf 2014-07-15 21:35:57 +08:00
先暂停一下的话不能直接删除了吗?
document.getElementById('nv').style.position='static' 可以有效 但是代码检测,只要页面发生滚动,就会直接重置导航栏的状态所以没用的 直接在检查元素里把导航栏删了,要的时候在ctrl+z就可以了 |
4
guchengf 2014-07-15 21:39:16 +08:00
勘误,我尝试了之后,发现1L的代码是可行的
|
6
Tonni 2014-07-15 21:50:31 +08:00 1
在Console里面执行:
`document.querySelector("#nv").style.position = "static"` 立马见效,但是因为有事件绑定的缘故,每次滚动窗口又会出现固定浮动效果,我判断是因为window或者document上绑定了onscroll事件,每次滚动条变化都会导致从新计算,但是我从Console里执行下面的几个命令都返回的null: ``` window.onscroll null document.onscroll null document.querySelector("html").onscroll null document.querySelector("body").onscroll null ``` 怎么才能找到具体事件绑定呢?有知道的朋友告知下。 |
9
GPU OP |
11
Tonni 2014-07-15 22:28:10 +08:00 1
我找到了,就是绑定在window上的scroll事件做鬼。
解决办法就是在Console里面执行这两个命令: ``` document.querySelector("#nv").style.position = "static"; window.removeEventListener("scroll", getEventListeners(window).scroll[0].listener); ``` 执行完滚两步,看下效果。 |
12
Tonni 2014-07-15 22:35:30 +08:00 1
其实window.scroll下面绑定了两个事件,在列表页时控制浮动的事件回调在window.scroll事件队列的第一个位置,所以上面的代码生效,但是在帖子的内容页控制浮动的事件回调在window.scroll事件队列的第二个位置,所以上面的代码要在帖子内容页生效需要执行两次,或者干脆执行下面的命令,将这两个事件在所有页面都删除掉:
``` document.querySelector("#nv").style.position = "static"; window.removeEventListener("scroll", getEventListeners(window).scroll[0].listener); window.removeEventListener("scroll", getEventListeners(window).scroll[0].listener); ``` 符上一个有用的链接: http://stackoverflow.com/questions/9046741/get-event-listeners-attached-to-node-using-addeventlistener |
13
Tonni 2014-07-15 22:44:16 +08:00 1
刚才我又试了下,window下绑定的resize事件也会导致这个问题,继续上面的代码,还要加一段代码移除resize事件的回调,完整的代码就应该是:
``` document.querySelector("#nv").style.position = "static"; window.removeEventListener("scroll", getEventListeners(window).scroll[0].listener); window.removeEventListener("scroll", getEventListeners(window).scroll[0].listener); window.removeEventListener("resize", getEventListeners(window).resize[0].listener); ``` |
15
GPU OP @Tonni 还有想知道你是怎么一步一步找到的相关的? 我一直不知道开发者工具的这些功能应该怎么去用 。 只会用Elements 修改一下
|
16
Tonni 2014-07-15 23:56:17 +08:00
@GPU ;),我就是吃这口饭的,苦逼前端工程师,解决问题的办法就是分析问题,评估问题出现在什么地方,然后去验证问题,找到问题了,然后再Google一下就解决啦,当然这些是要靠一定的经验基础的。
|
17
KillAd 2014-07-16 00:37:07 +08:00
CHH账号被莫名其妙封掉了 联系他们站长 理都不理!
|
18
GPU OP |
19
GPU OP @Tonni
我试了这条命令 ```` document.querySelector(".pls .avatar").style.display = "none"; ```` 但是只有第一个出现的元素隐藏的.下面的就没反应了. |
20
Tonni 2014-07-16 08:53:14 +08:00 via Android
@GPU 不是querySelector是querySelectorAll这个方法,匹配所有的元素,现在在地铁,不方便调试
|
21
Tonni 2014-07-16 10:04:51 +08:00
```
var avatarList = document.querySelectorAll(".pls .avatar"); var nodes = Array.prototype.slice.call(avatarList, 0); nodes.forEach(function (node){node.style.display = "none"}); ``` |