ScreenOrientation: метод lock()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Метод lock() интерфейса ScreenOrientation блокирует ориентацию содержащего документа в указанной ориентации.
Обычно блокировка ориентации поддерживается только на мобильных устройствах и когда контекст браузера находится в полноэкранном режиме. Если блокировка поддерживается, она должна работать со всеми параметрами, перечисленными ниже.
Синтаксис
lock(orientation)
Параметры
orientation-
Тип блокировки ориентации. Один из следующих:
"any"-
Любая из
portrait-primary,portrait-secondary,landscape-primaryилиlandscape-secondary. "natural"-
Естественная ориентация экрана с базовой операционной системы: либо
portrait-primaryлибоlandscape-primary. "landscape"-
Ориентация, где ширина экрана больше высоты. В зависимости от конвенции платформы, это может быть
landscape-primary,landscape-secondary, или оба. "portrait"-
Ориентация, где высота экрана больше ширины. В зависимости от конвенции платформы, это может быть
portrait-primary,portrait-secondary, или оба. "portrait-primary"-
Основной портретный режим. Если естественная ориентация — портретная (высота экрана больше ширины), она будет такой же, как и естественная ориентация, и соответствовать углу 0 градусов. Если естественная ориентация — альбомная, то пользовательский агент может выбрать любую портретную ориентацию в качестве
portrait-primaryиportrait-secondary; одна из них получит угол 90 градусов, а другая — 270 градусов. "portrait-secondary"-
Второстепенная портретная ориентация. Если естественная ориентация — портретная, этот режим будет иметь угол 180 градусов (то есть устройство перевернуто относительно естественной ориентации). Если естественная ориентация — альбомная, пользовательский агент может выбрать любую ориентацию в качестве
portrait-primary. "landscape-primary"-
Основной альбомный режим. Если естественная ориентация — альбомная (ширина больше высоты), она будет такой же, как и естественная ориентация, и соответствовать углу 0 градусов. Если естественная ориентация — портретная, то пользовательский агент может выбрать любую альбомную ориентацию в качестве
landscape-primaryс углом 90 или 270 градусов (landscape-secondaryбудет другой ориентацией и углом). "landscape-secondary"-
Второстепенный альбомный режим. Если естественная ориентация — альбомная, эта ориентация перевернута относительно естественной ориентации и будет иметь угол 180 градусов. Если естественная ориентация — портретная, пользовательский агент может выбрать любую ориентацию в качестве
landscape-primary.
Возвращаемое значение
Объект Promise, который разрешается после успешной блокировки.
Исключения
Обещание может быть отклонено со следующими исключениями:
-
InvalidStateErrorDOMException -
Бросается, если документ не полностью активен.
-
SecurityErrorDOMException -
Бросается, если состояние видимости документа скрыто или если документу запрещено использовать эту функцию (например, путём исключения ключевого слова
allow-orientation-lockатрибутаsandboxэлементаiframe). -
NotSupportedErrorDOMException -
Бросается, если пользовательский агент не поддерживает блокировку ориентации экрана для данной ориентации.
-
AbortErrorDOMException -
Бросается, если вызывается другой метод
lock().
Примеры
В этом примере показано, как заблокировать экран в противоположной ориентации от текущей. Обратите внимание, что этот пример будет работать только на мобильных устройствах и других устройствах, поддерживающих изменения ориентации.
<div id="example_container"> <button id="fullscreen_button">Fullscreen</button> <button id="lock_button">Lock</button> <button id="unlock_button">Unlock</button> <textarea id="log" rows="7" cols="85"></textarea> </div>
const log = document.getElementById("log");
// Lock button: Lock the screen to the other orientation (rotated by 90 degrees)
const rotate_btn = document.querySelector("#lock_button");
rotate_btn.addEventListener("click", () => {
log.textContent += `Lock pressed \n`;
const oppositeOrientation = screen.orientation.type.startsWith("portrait")
? "landscape"
: "portrait";
screen.orientation
.lock(oppositeOrientation)
.then(() => {
log.textContent = `Locked to ${oppositeOrientation}\n`;
})
.catch((error) => {
log.textContent += `${error}\n`;
});
});
// Unlock button: Unlock the screen orientation (if locked)
const unlock_btn = document.querySelector("#unlock_button");
unlock_btn.addEventListener("click", () => {
log.textContent += "Unlock pressed \n";
screen.orientation.unlock();
});
// Full screen button: Set the example to fullscreen.
const fullscreen_btn = document.querySelector("#fullscreen_button");
fullscreen_btn.addEventListener("click", () => {
log.textContent += "Fullscreen pressed \n";
const container = document.querySelector("#example_container");
container.requestFullscreen().catch((error) => {
log.textContent += `${error}\n`;
});
});
Для тестирования примера, сначала нажмите кнопку «Полноэкранный режим». После того, как пример перейдёт в полноэкранный режим, нажмите кнопку «Заблокировать», чтобы переключиться на ориентацию, и «Разблокировать», чтобы вернуться к естественной ориентации.
Спецификации
| Спецификация |
|---|
| Ориентация экрана # dom-screenorientation-lock |
Совместимость с браузерами
| Десктоп | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
lock |
38Всегда выбрасываетNotSupportedError. |
79Всегда выбрасываетNotSupportedError. |
превью43Всегда выбрасываетNotSupportedError. |
25Всегда выбрасываетNotSupportedError. |
Нет | 38 |
79–97API существует, но возвращаетNS_ERROR_UNEXPECTED. |
25 | Нет | 3.0 | 38 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock