[]
Liigan urheilujohtajat kommentoivat kiisteltyä sarjamallia – HPK:n Ilkka Haapea vietti radiohiljaisuutta | Urheilu | Hämeen Sanomat { if (!Hyphenopoly.hyphenators) { return } Hyphenopoly.hyphenators[”HTML”].then((hyphenator) => { for (const itemSelector in Hyphenopoly.setup.selectors) { const containerNode = document.querySelector(containerSelector) const itemNodeList = containerNode.querySelectorAll(itemSelector) itemNodeList.forEach((itemNode) => { hyphenator(itemNode, itemSelector) }) } }) } ]]> { if (!previewAdUnits.includes(key)) { delete gamAdUnits[key]; elementsToHide.push(key); } }); // hide deleted adslots window.addEventListener(’load’, (event) => { elementsToHide.forEach(key => { if (document.getElementById(adSlotPrefix+key) != null) { let elementParent = document.getElementById(adSlotPrefix+key).parentElement; if (elementParent != null) { elementParent.style.display = ”none”; } } }); }); } function getCookie(name) { name = name + ’=’; const decodedCookie = decodeURIComponent(document.cookie); const cookies = decodedCookie.split(’;’); for (let i = 0; i 0) { generateTargetingParameters(”CxSegments”, cXsegmentIds); } if (Array.isArray(topics)) { let topicsAndMarketingCategories = []; if (topics.length > 0) { topicsAndMarketingCategories = topicsAndMarketingCategories.concat(topics); } if (appendMarketingCategoriesToTopics && Array.isArray(marketingCategories) && marketingCategories.length > 0) { topicsAndMarketingCategories = topicsAndMarketingCategories.concat(marketingCategories); } if (topicsAndMarketingCategories.length > 0) { generateTargetingParameters(’aihe’, topicsAndMarketingCategories); } } if (Array.isArray(marketingCategories) && marketingCategories.length > 0) { generateTargetingParameters(’mainoskategoria’, marketingCategories); } if (Array.isArray(advertisers) && advertisers.length > 0) { generateTargetingParameters(’mainostaja’, advertisers); } if (brandSafety) { generateTargetingParameters(’brand_safety’, brandSafety); } if (brandSafetyScore) { generateTargetingParameters(’brand_safety_score’, brandSafetyScore); } if (articleid) { generateTargetingParameters(’articleid’, articleid); } if (isPreview) { generateTargetingParameters(’is_preview’, ”1”); generateTargetingParameters(”url_params”, ”test”); } // Set general ad settings if (enableLazyLoad == true) { googletag.pubads().enableLazyLoad({ fetchMarginPercent: fetchMarginPercent, renderMarginPercent: renderMarginPercent, mobileScaling: mobileScaling }); } if (collapseEmptyDivs == true) { googletag.pubads().collapseEmptyDivs(true); } if (disableInitialLoad == true) { googletag.pubads().disableInitialLoad(); } if (enableSRA == true) { googletag.pubads().enableSingleRequest(); }googletag.enableServices(); // Handle notification texts / hide empty ad slots googletag.pubads().addEventListener(’slotRenderEnded’, function(event) { if (event.slot && typeof event.slot.getSlotId === ’function’) { let slotId = event.slot.getSlotId(); if (slotId && typeof slotId.getDomId === ’function’) { let domId = slotId.getDomId(); if (domId && document.getElementById(domId)) { let element = document.getElementById(domId); let wrapper = element.parentElement; // Handle filled ad request if (!event.isEmpty) { let iframe = document.querySelector(”#”+domId+” > [id^=google_ads_iframe_] > iframe”); if (iframe) { // Accessibility: remove landmarks iframe.removeAttribute(”role”); } // Ad labels and skip links if (wrapper && !(event.slot && typeof event.slot.getOutOfPage === ’function’ && event.slot.getOutOfPage() === true)) { function handleLabelsAndSkipLinks() { let elementStyle = window.getComputedStyle(element); if (wrapper.offsetHeight – (parseInt(elementStyle.marginTop, 10) + parseInt(elementStyle.marginBottom, 10)) > 100) { let adSlotKey = domId.replace(adSlotPrefix, ”); let adUnit = gamAdUnits[adSlotKey]; let currentConf = null; let adLabels = false; if (adUnit) { if (pageType === ’article’) { currentConf = adUnit.article_config; } else if (pageType === ’section’) { currentConf = adUnit.section_config; } adLabels = currentConf.show_labels; // If paywall is shown to user, use paywall specific config if (pageType === ’article’ && !userHasPermission && typeof currentConf.paywall_config !== ’undefined’ && currentConf.paywall_config.show_labels !== ’undefined’ && !isPreview) { adLabels = currentConf.paywall_config.show_labels; } else if (isComicArticle == true && typeof currentConf.comic_config !== ’undefined’ && currentConf.comic_config.show_labels !== ’undefined’) { adLabels = currentConf.comic_config.show_labels; } } // Show labels if necessary if (adLabels && !wrapper.querySelector(”.diks-display-ad__notice”)) { var adNoticeTop = document.createElement(”div”); var adNoticeBottom = document.createElement(”div”); adNoticeTop.classList.add(”diks-display-ad__notice”, ”diks-display-ad__notice–before”); adNoticeBottom.classList.add(”diks-display-ad__notice”, ”diks-display-ad__notice–after”); let noticeTextTop = document.createTextNode(inContentAdTextTop); let noticeTextBottom = document.createTextNode(inContentAdTextBottom); adNoticeTop.appendChild(noticeTextTop); adNoticeBottom.appendChild(noticeTextBottom); // Render notification texts for a single ad wrapper.insertBefore(adNoticeTop, wrapper.childNodes[0]); wrapper.insertBefore(adNoticeBottom, null); } // Create a skip link if (adUnit && adUnit.type === ’normal’ && skipLinksEnabled && !wrapper.querySelector(”.diks-display-ad__skip-link”)) { // Render render skip for a single ad let skipLinkStartElement = document.createElement(’a’); let skipLinkText = document.createTextNode(’Ohita mainos’); let skipLinkEndElement = document.createElement(’div’); let skipLinkEndElementId = ’diks-skip-link-’ + domId; skipLinkStartElement.appendChild(skipLinkText); skipLinkStartElement.classList.add(’diks-display-ad__skip-link’, ’diks-button’, ’diks-button–primary’, ’diks-a11y__screen-reader’, ’diks-a11y__screen-reader–focusable’); skipLinkStartElement.href = ’#’ + skipLinkEndElementId; skipLinkEndElement.id = skipLinkEndElementId; wrapper.insertBefore(skipLinkStartElement, wrapper.childNodes[0]); wrapper.insertBefore(skipLinkEndElement, null); } if (!adLabels) { element.classList.add(”diks-display-ad__unit–with-margin”); } } else { element.classList.remove(”diks-display-ad__unit–with-margin”); } } handleLabelsAndSkipLinks(); let resizeObserver = new ResizeObserver(function(entries) { entries.forEach(function(entry) { handleLabelsAndSkipLinks(); }); }); resizeObserver.observe(wrapper); } } else if (wrapper) { // Hide wrapper when ad request is unfilled console.log(”hiding: ”+domId); wrapper.style.display = ”none”; } } } } }); window.adSetupReady = true; displayAdsIfPossible(); }; }); }(window.googletag = window.googletag || {})); ]]>
Omat tiedot’); var logoutForm = stringToHTML(’
Jääkiekon SM-liigaseurojen urheilujohtajilla on varsin yhtenäinen näkemys siitä, että runkosarjan ottelumäärä 60 on nykyisellään hyvä luku. Jussi Nukari/LEHTIKUVA
Jääkiekon SM-liigaseurojen urheilujohtajille tehty kysely kertoo, että he ovat työssään tottuneet talouden ja urheilun tasapainotteluun.
Tapio Ahlroth
7.10.2024 19:00 | Päivitetty 7.10.2024 20:11
Jääkiekon SM-liigaseurojen urheilujohtajilla on varsin yhtenäinen näkemys siitä, että runkosarjan ottelumäärä 60 on nykyisellään hyvä luku. Asia kävi ilmi kyselystä mediakonserni Keskisuomalaisen levikkialueella toimiville urheilujohtajille.
Haluatko lukea koko jutun?
Tilaa digi ja pääset lukemaan kaikki Hämeen Sanomien sisällöt.
Tilaa 6 kk 4,90 €/kk Tilaa 2 kk 15 €/kk
- Hameensanomat.fi-verkkopalvelun rajaton käyttöoikeus vuoden jokaisena päivänä
- Näköislehti
- Mobiilisovelluksen käyttöoikeus (iOS ja Android)
- Lukuoikeus sinulle ja kolmelle perheenjäsenellesi
Mainos: Rusta
Mainos: Rusta
14.10.2024 0:00
1) { document.querySelector(’html’).classList.add(’diks-user-agent–ios’); } ]]> this.handleMouseDown(e)); this.slider.addEventListener(’mouseleave’, () => this.handleMouseLeave()); this.slider.addEventListener(’mouseup’, () => this.handleMouseUp()); this.slider.addEventListener(’mousemove’, (e) => this.handleMouseMove(e)); this.slider.addEventListener(’click’, (e) => this.handleClick(e)); } handleMouseDown(e) { this.isDown = true; this.slider.classList.add(’diks-navigation–draggable-active’); this.startX = e.pageX – this.slider.offsetLeft; this.scrollLeft = this.slider.scrollLeft; this.preventClick = false; } handleMouseLeave() { this.isDown = false; this.slider.classList.remove(’diks-navigation–draggable-active’); } handleMouseUp() { this.isDown = false; this.slider.classList.remove(’diks-navigation–draggable-active’); } handleMouseMove(e) { if (!this.isDown) return; e.preventDefault(); const x = e.pageX – this.slider.offsetLeft; const walk = (x – this.startX) * 3; //scroll-fast this.slider.scrollLeft = this.scrollLeft – walk; this.preventClick = true; } handleClick(e) { if (this.preventClick) { e.preventDefault(); } } } // Set the draggable navs (multiple) to handle their scrollbars let scrollableNavs = document.querySelectorAll(’.diks-navigation–draggable’); // Make draggable navigation draggable if ( scrollableNavs ) { scrollableNavs.forEach(function(element) { new HorizontalScrollDragger(element); }); } // Handle has-scrollbars class adding and removing function handleScrollableNavScrollbars(scrollableNavElement) { // Debugging: console.log(”Scroll width: ” + scrollableNavElement.scrollWidth + ” & client width: ” + scrollableNavElement.clientWidth); // If scrollable area is wider (scrollWidth) than what’s visible (clientWidth) the element has scrollbars if ( scrollableNavElement.scrollWidth > scrollableNavElement.clientWidth ) { scrollableNavElement.classList.add(’diks-navigation–draggable-has-scrollbars’); scrollableNavElement.parentElement.classList.add(’diks-navigation-wrapper–has-scrollbars’); } // Remove the has-scrollbars class if it exists but shouldn’t (element does not have scrollbars) else if ( scrollableNavElement.classList.contains(’diks-navigation–draggable-has-scrollbars’) ) { scrollableNavElement.classList.remove(’diks-navigation–draggable-has-scrollbars’); scrollableNavElement.parentElement.classList.remove(’diks-navigation-wrapper–has-scrollbars’); } } // If scrollable nav exists add (or remove) necessary classes // ”DOMContentLoaded” does not wait for styles to load and styles affect the size of the scrollable nav directly so we have to use ”load” instead window.addEventListener(’load’, (event) => { if ( scrollableNavs ) { scrollableNavs.forEach(function(element) { handleScrollableNavScrollbars(element); }); } }); // Check if scrollable nav has scrollbar window.addEventListener(’resize’, function(event){ if ( scrollableNavs ) { scrollableNavs.forEach(function(element) { handleScrollableNavScrollbars(element); }); } }); ]]> 1 ? true : false); // Initialize lightGallery(gallery, { autoplay: galleryHasMultipleImages, counter: galleryHasMultipleImages, download: false, exThumbImage: thumbnailSource, hideControlOnEnd: true, licenseKey: ”96BAAD7E-3BF04397-BBB55AE3-6D5A2C0B”, loop: false, plugins: [lgAutoplay, lgFullscreen, lgThumbnail, lgZoom], selector: ’.diks-gallery__link’, mobileSettings: { controls: true, showCloseIcon: true }, strings: { closeGallery: ’Sulje galleria’, toggleMaximize: ’Maksimointi’, previousSlide: ’Edellinen’, nextSlide: ’Seuraava’, download: ’Lataa’, playVideo: ’Katso video’, mediaLoadingFailed: ’Sisällön lataus epäonnistui’, }, autoplayPluginStrings: { toggleAutoplay: ’Automaattinen toisto’ }, fullscreenPluginStrings: { toggleFullscreen: ’Kokoruututila’ }, thumbnailPluginStrings: { toggleThumbnails: ’Pikkukuvat’ }, zoomPluginStrings: { zoomIn: ’Suurenna’, zoomOut: ’Pienennä’, viewActualSize: ’Näytä täysikokoisena’ } }); // After closing LightGallery return focus to the image link that opened the gallery gallery.addEventListener(’lgAfterClose’, () => { galleryImageLinks[0].focus(); }); }); ]]> { // Stash the event so it can be triggered later deferredPrompt = e; const enablePrompt = 0; if(!enablePrompt) { e.preventDefault(); } // Update the UI to notify the user they can install PWA pwaShowInstallationOption(); // Handle installation document.querySelectorAll(’.js-diks-apps-pwa-installation-button’).forEach(function(button) { button.addEventListener(’click’, (e) => { // Show the prompt deferredPrompt.prompt(); // Wait for user to respond deferredPrompt.userChoice.then((choiceResult) => { if (choiceResult.outcome === ’accepted’) { console.log(’PWA: Installed (prompt)’); dataLayer.push({ ’event’: ’PWA.installation’, ’eventData’: ’success’ }); } else { console.log(’PWA: User dismissed installation prompt’); dataLayer.push({ ’event’: ’PWA.installation’, ’eventData’: ’canceled’ }); } deferredPrompt = null; }); }); }); }); // iOS installation process (show instructions modal) if (!navigator.standalone) { var userAgent = navigator.userAgent.toLowerCase(); var iPhoneUser = (/iphone/.test(userAgent)); var iPadUser = (/ipad/.test(userAgent) || (/macintosh/.test(userAgent) && navigator.maxTouchPoints > 1)); var safariUser = (/^(?!.*(brave|chrome|crios|duckduckgo|edgeios|firefox|fxios|opios|ucbrowser|yabrowser)).*safari.*$/.test(userAgent)); if (safariUser && (iPhoneUser || iPadUser)) { // Update the UI to notify the user they can install PWA pwaShowInstallationOption(); // Instructions var modals = document.querySelectorAll(’.js-diks-apps-pwa-ios-instructions’).forEach(function(element) { // Position on screen based on device if (iPhoneUser) { element.classList.add(’diks-apps__pwa-ios-modal–bottom’); } else if (iPadUser) { element.classList.add(’diks-apps__pwa-ios-modal–top’); } }); // Handle modal instructions from installation button document.querySelectorAll(’.js-diks-apps-pwa-installation-button’).forEach(function(button) { button.addEventListener(’click’, (e) => { // Show first modal document.querySelector(’.js-diks-apps-pwa-ios-instructions’).classList.toggle(’diks-apps__pwa-ios-modal–is-visible’); dataLayer.push({ ’event’: ’PWA.instructions.shown’, ’eventData’: ’iOS’ }); }); }); } } ]]>Lähde