小编spi*_*ock的帖子

在iphone safari虚拟键盘上键入时滚动到所选元素

我正在构建一个iphone webapp并且有一个带有输入字段的页面.我希望该字段在显示时向上滚动到虚拟键盘上方.我已经尝试在输入焦点事件上放置一个scrollTo(x,y)(即在键盘出现之前),但是当我开始键入页面时再次向上滚动(可能是基于默认的移动safari行为).我也尝试过设置按键事件处理程序,但是阻止这些事件的传播只是禁用了键盘,尽管它确实阻止了滚动.

有没有什么办法来强制页面是在一个特定的位置(与输入字段只是在键盘上方),当虚拟键盘显示出来,当我恢复打字不会将其移动?

javascript iphone web-applications mobile-safari

12
推荐指数
1
解决办法
4293
查看次数

Python异步回调和生成器

我正在尝试将同步库转换为使用内部异步IO框架.我有几个方法看起来像这样:

def foo:
  ....
  sync_call_1()   # synchronous blocking call
  ....
  sync_call_2()   # synchronous blocking call
  ....
  return bar
Run Code Online (Sandbox Code Playgroud)

对于每个同步函数(sync_call_*),我编写了一个相应的异步函数,它接受一个回调.例如

def async_call_1(callback=none):
  # do the I/O
  callback()
Run Code Online (Sandbox Code Playgroud)

现在对于python新手问题 - 最简单的方法是翻译现有方法以使用这些新的异步方法吗?也就是说,foo()上面的方法现在需要:

def async_foo(callback):
  # Do the foo() stuff using async_call_*
  callback()
Run Code Online (Sandbox Code Playgroud)

一个明显的选择是将回调传递给每个异步方法,该方法有效地"恢复"调用"foo"函数,然后在方法的最后调用回调全局.但是,这会使代码变得脆弱,丑陋,我需要为每次调用async_call_*方法添加一个新的回调.

有没有一种简单的方法可以使用python成语,例如生成器或协同程序?

python asynchronous generator

10
推荐指数
2
解决办法
9873
查看次数