Возможно, вы сможете использовать методы requestFullScreen (), как описано в https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode .
Примечание: для этого все еще требуется вход пользователя - но избегайте использования вспышки.
function toggleFullScreen() {
if (!document.fullscreenElement && // alternative standard method
!document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) { // current working methods
if (document.documentElement.requestFullscreen) {
document.documentElement.requestFullscreen();
} else if (document.documentElement.msRequestFullscreen) {
document.documentElement.msRequestFullscreen();
} else if (document.documentElement.mozRequestFullScreen) {
document.documentElement.mozRequestFullScreen();
} else if (document.documentElement.webkitRequestFullscreen) {
document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
}
toggleFullScreen();
Это позволяет странице активировать полноэкранный режим и может быть активирован с помощью загрузки страницы на javascript стр. Тем не менее, поддержка старых браузеров отсутствует.
Это плохой совет - String.Length
действительно O (1). Это не похоже на strlen
в C.
По общему признанию, это не гарантировано в документах , насколько я могу судить, но неизменность строк делает его довольно глупая вещь не , чтобы сделать O (1). (И не только O (1), но и очень быстрое постоянное время).
Откровенно говоря, если бы кто-то дал такой совет, я бы стал более скептически относиться к другим совет, который они тоже могут предоставить ...
String.Length - O (1). Причина, по которой люди говорят вам не вызывать его в цикле, заключается в том, что это доступ к свойству, который аналогичен вызову метода. В действительности один дополнительный вызов метода редко имеет какое-либо существенное значение.
Как всегда, не начинайте просматривать свой код, кэшируя все вызовы String.Length, если только ваш профилировщик не говорит, что это источник проблемы с производительностью.
Согласно внутренним комментариям, свойство String.Length - это единственная инструкция, которая не запускает цикл for. Следовательно, это операция O(1).
Вспомните, что строки неизменяемы. System.String.Length
никогда не меняется.
Нет, не пересчитывается. Тип строки неизменяемый.
Чтобы продолжить это, согласно руководящим принципам проектирования среды .net , свойство объекта, которое является очень статичным и энергонезависимым по своей природе, должно быть разработано как свойство. Если свойство имеет непостоянный характер и требует пересчета при каждом вызове, оно должно быть доступно как метод.
вы можете воспользоваться этим правилом, пытаясь проверить, требуется ли для свойства достаточно циклов обработки, чтобы привлечь ваше внимание.
Как уже говорили другие, String.Length является постоянным свойством. Если вы действительно заботитесь о производительности (или имеете значительные итерации), вы можете присвоить ее значение локальной целочисленной переменной один раз и прочитать это много раз (в цикле и т. Д.). Это даст оптимизатору больше шансов выделить это значение в регистр ЦП. Доступ к свойству - намного более дорогостоящая операция, чем к переменной стека или регистру.