Chrome 76 添加了对prefers-color-scheme媒体查询的支持(又名“暗模式”)。
但是,如何在不打开和关闭系统暗模式的情况下轻松地以两种配色方案测试我的网页?
这是Firefox的相同问题,但我在 Chrome 和 Chrome DevTools 中找不到类似的设置。
React 刚刚startTransition在 v18 中发布了 API。虽然这看起来像是一个可以带来更多响应能力的“魔咒”,但该文档对其幕后行为的描述相当模糊。文档中与其行为相关的唯一一句话是“转换中的更新会产生更紧急的更新,例如点击”。
作为一名 React 程序员,我担心它是否会导致我的组件出现故障。例如:
state. 当转换将其转变为 时slow_update(state),会发生另一个事件将状态转变为fast_update(state)。在这个过程中我们将同时得到slow_update(state)和fast_update(state)计算。当状态更新按顺序完成时,这在旧的 React 中永远不会发生。useEffect状态更新触发了一些钩子,如果转换被中断,回调会执行两次吗?由于状态在转换期间发生分支,回调是否会收到一些不一致的数据?我也很好奇它会让我的应用程序变得更加灵敏。例如:
startTransition适用于渲染阶段,还是仅优化协调?它仅适用于回调本身,还是也适用于更新状态的后续渲染、useMemos 和s?useEffect看来 CPU 密集型逻辑无论如何都会阻塞主线程,因此 React 无法中断它。因此,如果我的组件在回调中过滤长列表startTransition,它是否得到了优化?requestAnimationFrame每 16ms 更新一次状态,而慢速转换需要更长的时间,那么慢速转换是否会一次又一次被中断?我已阅读文档、发行说明、reactwg 讨论和官方示例,但它们没有回答上述问题。由于与并发相关的错误很难修复或重现,因此如果有一些拇指规则(例如hooks 规则)可以保持转换代码始终正确,那就太好了。
一般来说,哪些代码将从中受益startTransition,以及需要什么来避免故障?
我已经编写了一个 Chrome 扩展程序,我正在将它迁移到其他浏览器,如 Firefox 和 Edge。但是,与 Chrome 的 API 相比,Firefox 上的 WebExtensions API 有一些差异。
所以我必须检测我是否应该使用回调风格的 API(在 Chrome 中,以及在 Edge 中)或承诺风格的 API(在 Firefox 中)。
例如:
if(RUNNING_ON_CHROME)
chrome.permissions.request({
permissions: ...,
origins: ...,
}, function(result) { // callback-style
...
});
else // running on firefox
browser.permissions.request({
permissions: ...,
origins: ...,
}).then(function(result) { // promise-style
...
});
Run Code Online (Sandbox Code Playgroud)
我想知道如何进行RUNNING_ON_CHROME测试。我应该检查 UserAgent 中的相关字符串,还是检查browser!==undefined?
附:Edge 使用browser.*API,但它的 API 是回调式的。
javascript firefox google-chrome google-chrome-extension firefox-addon-webextensions
这是一个MCVE:
/.travis.yml:
language: python
python:
- "3.5"
dist: trusty
addons:
chrome: stable
before_install:
- pip install selenium
- wget https://chromedriver.storage.googleapis.com/2.35/chromedriver_linux64.zip
- unzip chromedriver_linux64.zip -d test/driver/
before_script:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- sleep 3
script:
- cd test
- python3 ./test_main.py
Run Code Online (Sandbox Code Playgroud)
/test/test_main.py:
from selenium.webdriver import *
b=Chrome('driver/chromedriver')
b.get('http://example.com')
b.quit()
Run Code Online (Sandbox Code Playgroud)
构建将失败,引发一个异常,说chrome崩溃了:
$ python3 ./test_main.py
Traceback (most recent call last):
File "./test_main.py", line 2, in <module>
b=Chrome('driver/chromedriver')
File "/home/travis/virtualenv/python3.5.4/lib/python3.5/site-packages/selenium/webdriver/chrome/webdriver.py", line 75, in __init__
desired_capabilities=desired_capabilities)
File "/home/travis/virtualenv/python3.5.4/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line …Run Code Online (Sandbox Code Playgroud) 我想在 Virtualbox API 中恢复虚拟机,但出现此异常:
AttributeError: '<win32com.gen_py.VirtualBox Type Library.IConsole instance at 0x41746480>' object has no attribute 'restoreSnapshot'
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
这是我的代码:
import vboxapi
def wait(sth):
sth.waitForCompletion(-1)
class Foo:
mgr=vboxapi.VirtualBoxManager()
vbox=mgr.vbox
vm=vbox.findMachine(const.VM_NAME)
def __init__(self):
self.session=self.mgr.getSessionObject(self.vbox)
wait(self.vm.launchVMProcess(self.session, 'gui', ''))
def restore(self):
console=self.session.console
wait(console.powerDown())
wait(console.restoreSnapshot(self.vm.findSnapshot('test')))
wait(console.powerUp())
foo=Foo()
foo.restore()
Run Code Online (Sandbox Code Playgroud)
我在 Python 3.4 下使用 vboxapi 5.0.10。
另外,当我改变console.restoreSnapshot到self.vm.restoreSnapshot根据VirtualBox的SDK参考,它说Method Machine::restoreSnapshot is not implemented。
我是python中的新手,我想学习python的内置函数的实现abs(),但是在\__builtin__.py我看到的python文件中:

有人知道它是如何工作的吗?
javascript ×2
python ×2
built-in ×1
css ×1
firefox ×1
firefox-addon-webextensions ×1
pywin32 ×1
react-hooks ×1
reactjs ×1
travis-ci ×1
virtualbox ×1