无法在chrome devtools

时间:2016-09-19 17:58:47

标签: jquery google-chrome-devtools sizzle

我每隔400毫秒运行javascript代码并检查页面上是否找到某个元素。

要搜索元素,我们使用JQuery查找并提供html元素作为上下文。

$('html').find('#findMe')

因为我们正在使用带有上下文的find,所以jQuery sizzle会在html元素中添加一个id属性,这反过来会导致css编辑器刷新,不会给我足够的时间进行任何更改。 因为我们每400毫秒运行一次,所以无法编辑CSS。

我想知道是否有办法解决这个问题,可能是Chrome中的设置。

更新:这是来自Sizzle的相关代码,如jQuery 1.6.4中所示 -

            // qSA works strangely on Element-rooted queries
            // We can work around this by specifying an extra ID on the root
            // and working up from there (Thanks to Andrew Dupont for the technique)
            // IE 8 doesn't work on object elements
            } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
                var oldContext = context,
                    old = context.getAttribute( "id" ),
                    nid = old || id,
                    hasParent = context.parentNode,
                    relativeHierarchySelector = /^\s*[+~]/.test( query );

                if ( !old ) {
                    context.setAttribute( "id", nid );
                } else {
                    nid = nid.replace( /'/g, "\\$&" );
                }
                if ( relativeHierarchySelector && hasParent ) {
                    context = context.parentNode;
                }

                try {
                    if ( !relativeHierarchySelector || hasParent ) {
                        return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
                    }

                } catch(pseudoError) {
                } finally {
                    if ( !old ) {
                        oldContext.removeAttribute( "id" );
                    }
                }
            }

1 个答案:

答案 0 :(得分:1)

Stylebot:devtools替代

作为一个直接的解决方案,我建议给予" Stylebot"尝试镀铬扩展。它是Chrome Devtools(您遇到问题)的替代方案,并允许您覆盖页面上的CSS。另外,您可以保存CSS,这样您就可以刷新页面并继续使用与迭代相同的样式并改进代码。


此外,关于您的Sizzle问题:

默认情况下,Sizzle不会为任何元素添加ID。虽然也许你的意思是你有脚本重写找到的元素的ID属性?

我建议再看看你的剧本,看看是否有更好的方法来实现你的目标。理想情况下没有超时。也许在页面加载时运行一次。或者创建一个函数并将其附加到将生成新元素的特定事件,因此需要您运行查找函数。