$(".modal").hide()
- это код, который скрывает модал, а не проверяет, закрыт ли он.Вам нужно использовать $(".modal").is(':visible');
в вашем состоянии.
Если я вас правильно понимаю, вы хотите проверить не только то, что модальный режим не виден сейчас, но никогда не был виден с момента загрузки страницы.Для этого я бы определил булеву переменную и установил ее в false, как только будет открыт модальный режим.Я предполагаю, что вы используете модалы Bootstap, 'shown.bs.modal'
- это событие, которое срабатывает при открытии модального окна: https://getbootstrap.com/docs/4.1/components/modal/#events
// variable to store the visibility
var modal_was_not_visible = true;
// listener for modal open
$('.modal').on('shown.bs.modal', function (e) {
// set variable to false since modal is displayed
modal_was_not_visible = false;
})
// use variable for your condition
window.addEventListener("orientationchange", function() {
if (window.matchMedia("(orientation: portrait)").matches && modal_was_not_visible) {
$('html, body').scrollTop($('#exact-line').offset().top);
}
});