小编pan*_*nzi的帖子

有没有办法在繁重的DOM操作期间暂停重排?

我需要在我编写的附加组件中对整个网页文档进行大量的DOM操作.我想尽量减少回流,因此我的所有操作只会发生一次回流.删除body元素,执行操作然后再次插入它不是一个选项,因为这会重新评估所有<script>元素.目前我'none'在操作之前设置了主体的可见性并恢复了显示后的值.不过,我不确定这是否是解决这个问题的最佳方法.

有没有更好的办法?当然它可能是Firefox特定的代码.毕竟它是一个Firefox附加组件.

firefox dom reflow

5
推荐指数
1
解决办法
486
查看次数

获取传递关系中的所有节点

是否有可能通过与SPARQL的传递关系获得连接的节点列表?我有以这种方式连接的元素:

?a g:eastOf ?b
?b g:eastOf ?c
…
Run Code Online (Sandbox Code Playgroud)

并非所有节点都相互连接,因为有些节点更向南.只有当节点垂直在同一平面上时,才会存在g:eastOf关系.这意味着有几组节点彼此没有连接.

我想得到所有这些节点组(基本上是列表列表).有没有办法在SPARQL中做到这一点?该SELECT陈述需要有限数量的变量,并且不能以某种方式表达"某事物列表".

我只对xsd:integer所有节点的属性从西向东升的列表感兴趣,但是在我得到第一个问题的解决方案后,这应该相对容易.

rdf sparql

5
推荐指数
2
解决办法
1307
查看次数

Ruby TCPSocket:找出可用的数据量

有没有办法找出Ruby中TCPSocket上有多少字节的数据可用?即没有阻塞可以准备多少字节?

ruby sockets nonblocking tcpsocket

4
推荐指数
1
解决办法
2126
查看次数

隐藏/显示浏览器标签的事件?

当浏览器选项卡丢失/获得焦点时是否有任何DOM事件?我知道有blurfocus事件window,但是当浏览器窗口整体失去焦点时它们也会触发.然后,浏览器可能仍然对用户可见.当然这样的事件将是浏览器特定的,但是没关系.

我想要这个的原因是因为我运行的动画可能会耗费相当多的CPU时间.当浏览器选项卡不可见时,没有理由继续动画.现在我知道现代浏览器会降低背景标签的计时器分辨率,但我实际上可以暂停动画,这样就不会消耗任何CPU时间.

万一你想知道,这就是我写的:http: //panzi.github.com/Browser-Ponies/

javascript tabs focus dom-events

4
推荐指数
1
解决办法
4803
查看次数

使用jQuery UI在空白排序中显示占位符文本

是否有一种适当的非hacky方式在空的可排序中添加占位符文本?我并不是指将项目拖到sortabel上时显示的占位符空格.我的意思是像"删除项目"这样的文字.仅在列表为空时显示.

我试图显示我自己的占位符元素,但是我无法正确更新它的可见性,因为当我将连接的可拖动拖动到可排序时,jQuery UI不会向我发送任何过度或结束事件.

编辑:示例代码:http://jsfiddle.net/RRnD8/

出于某种原因,在此示例代码over中触发了事件.out仍然没有.但在实际代码中,我可以使用change而不是over.

编辑2:嗯,out事件触发.但是在从可排序的元素中删除拖动的元素之前触发它.我解决了这个问题:

e.sortable({out: function () {
    setTimeout(realOutHandler.bind(this), 0);
}});
Run Code Online (Sandbox Code Playgroud)

有更清洁的方法吗?

jquery-ui jquery-ui-sortable jquery-ui-draggable

4
推荐指数
1
解决办法
6345
查看次数

匹配可迭代类型(使用begin()/ end()的数组和类)

我编写了类似于类的特性,如果给定类型是"可迭代的",可以使用它来测试.这对于数组(for T[N],not for T[])以及具有a beginend返回看起来像迭代器的方法的类都是如此.我想知道它是否可以比我更简洁/更简单地完成?

特别是impl命名空间中的东西看起来有点迂回/ hacky.这一切对我来说都有点难看.有关使用此示例并且可以使用g ++和clang ++编译的示例,请参阅:https://gist.github.com/panzi/869728c9879dcd4fffa8

template<typename T>
struct is_iterator {
private:
    template<typename I> static constexpr auto test(void*)
        -> decltype(
            *std::declval<const I>(),
            std::declval<const I>() == std::declval<const I>(),
            std::declval<const I>() != std::declval<const I>(),
            ++ (*std::declval<I*>()),
            (*std::declval<I*>()) ++,
            std::true_type()) { return std::true_type(); }

    template<typename I> static constexpr std::false_type test(...) { return std::false_type(); }

public:
    static constexpr const bool value = std::is_same<decltype(test<T>(0)), std::true_type>::value;
};

namespace impl {
    // implementation details …
Run Code Online (Sandbox Code Playgroud)

c++ templates type-traits c++14

4
推荐指数
1
解决办法
931
查看次数

C数组数组:为什么我需要在此处强制转换为const?

为什么我需要更改print_args此代码中的调用print_args(argc, (const char**)argv)才能进行编译?

#include <stdio.h>

void print_args(int argc, const char *argv[]) {
    for (int i = 0; i < argc; ++ i) {
        puts(argv[i]);
    }
}

int main(int argc, char *argv[]) {
    print_args(argc, argv);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我用gcc编译时,出现此错误:

$ gcc -Werror -std=c99 -g const.c -o const
const.c: In function ‘main’:
const.c:10:2: error: passing argument 2 of ‘print_args’ from incompatible pointer type [-Werror]
const.c:3:6: note: expected ‘const char **’ but argument is of type ‘char **’
cc1: …
Run Code Online (Sandbox Code Playgroud)

c arrays const

2
推荐指数
1
解决办法
629
查看次数