我正在设计一个主要关注数据输入的网站.在我的一个表单中,我有一些按钮可以快速递增和递减表单字段中的数字值.我在用
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
Run Code Online (Sandbox Code Playgroud)
禁用似乎使用适用于IOS的Firefox应用程序工作的缩放.但是,当另一个用户使用Safari对其进行测试时,单击该按钮的速度过快会导致页面放大,从而分散用户的注意力并使其无法快速增加值.从IOS 10开始,Apple出于可访问性原因删除了user-scalable = no,这就是为什么它只适用于像Firefox这样的第三方浏览器.我发现最接近禁用双击缩放的是这个
var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
var now = (new Date()).getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
Run Code Online (Sandbox Code Playgroud)
从/sf/answers/2700123891/ 然而,该禁用快速点击完全,这虽然防止双敲击缩放,还可以防止快速输入值的用户.有没有办法允许快速按下按钮,同时还禁用双击缩放?
我知道这个问题已经被问过很多次了,但这似乎是一个略有不同的变化,我无法弄清楚。
考虑以下代码:
#include <cstdio>
struct TestValue;
inline const TestValue* v_ptr = nullptr;
struct TestValue {
static const TestValue v1;
TestValue() {
v_ptr = this;
printf("TestValue Initialized at %p\n", this);
}
};
struct CallTest {
CallTest() {
printf("CallTest Initalized at %p\n", this);
printf("v_ptr = %p\n", v_ptr);
}
};
const inline TestValue TestValue::v1{};
const inline CallTest ct{};
int main() {}
Run Code Online (Sandbox Code Playgroud)
我使用的是 C++17 或更高版本,它增加了对外部静态初始化内联变量的支持。我试图理解使用内联说明符“out of line”时围绕初始化顺序的保证。请注意, v1被声明为 TestValue 的静态变量,然后稍后但在 之前内联定义ct。令人惊讶的是(至少对我来说),使用 Clang 14.0.3,程序打印:
CallTest Initalized at 0x404059
v_ptr = (nil)
TestValue …Run Code Online (Sandbox Code Playgroud) c++ inline static-variables initialization-order inline-variable