<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mobilní hry Archivy - Dvojklik</title>
	<atom:link href="https://www.dvojklik.cz/tag/mobilni-hry/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dvojklik.cz/tag/mobilni-hry/</link>
	<description>Magazín o informační bezpečnosti</description>
	<lastBuildDate>Tue, 21 May 2024 07:31:22 +0000</lastBuildDate>
	<language>cs</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.dvojklik.cz/wp-content/uploads/2020/09/dvojklik-favicon.png</url>
	<title>mobilní hry Archivy - Dvojklik</title>
	<link>https://www.dvojklik.cz/tag/mobilni-hry/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Za oponou hry: chrání mobilní aplikace soukromí dětí?</title>
		<link>https://www.dvojklik.cz/saferkidsonline/za-oponou-hry-chrani-mobilni-aplikace-soukromi-deti/</link>
		
		<dc:creator><![CDATA[Tereza Malkusová]]></dc:creator>
		<pubDate>Tue, 21 May 2024 07:31:14 +0000</pubDate>
				<category><![CDATA[Safer Kids Online]]></category>
		<category><![CDATA[mobilní hry]]></category>
		<category><![CDATA[ochrana dat]]></category>
		<guid isPermaLink="false">https://www.dvojklik.cz/?p=8474</guid>

					<description><![CDATA[Víte, jak nakládají hry a aplikace pro děti s daty? Ujistěte se, že digitální hřiště dětí jsou bezpečným místem, která data dětí opravdu dobře chrání.]]></description>
										<content:encoded><![CDATA[<p>Děti dnes tráví na telefonu hodně času. Přibližně <a href="http://www.eukidsonline.net/">80 % evropských dětí</a> ve věku 9-16 let má každý den přístup k internetu ze svého telefonu. Možnosti, které smartphony nabízejí jsou samozřejmě skvělé, ale je důležité brát v potaz také rizika.</p>
<p>Jako rodiče tato zařízení často kupujeme, abychom měli jistotu, že <strong>jsou naše děti v bezpečí</strong>. Obáváme se spíše nadužívání, možná vlivu sociálních sítí, ale možné <a href="https://esetcom-my.sharepoint.com/personal/tereza_malkusova_eset_com/Documents/články%20SKO/Nadměrné%20sdílení%20je%20rizikové.%20Co%20už%20je%20moc%20a%20jak%20naučit%20děti%20sdílet%20zdravě?">dopady na soukromí dětí</a> moc neřešíme.</p>
<p>Částečně za to může netransparentnost vývojářů aplikací a složité formulace v různých podmínkách používání, které jsou psané právničinou. Pojďme si shrnout, jak jsou na tom s ochranou soukromí dětské aplikace a ukázat si, jaké parametry pohlídat.</p>
					

<form
	  name="cz_b2c_mql_ebook_ochranadeti"
		target="_blank"
		method="post"
		id="se-webform-215"		
 target="_self" class="se-webform-215 se-webform" action="https://app.smartemailing.cz/public/web-forms-v2/display-form/15587-twu5wlrvw7tc1l69261yxcvsmg032ozpsswhyrcatdorhpdc0bkb1prpxwjge0cmolz95k3f59a5ui56trdrtv7g9ho37g7oa560">

<img decoding="async" class="form-box__ebook-cover" src="https://dvojklik.cz/wp-content/uploads/2024/02/Prirucka-pro-rodice_no-border-2.jpg" />
	<div class="se-webform-inner">
		<div class="se-header">
			<h3 id="prirucka-pro-rodice-jak-ochranit-deti-na-internetu">
				Příručka pro rodiče: Jak ochránit děti na internetu
			</h3>
		</div>

		<div class="se-body">
			<div>
	<div>
		<label hidden for="frm-webFormHtmlRenderer-webFormForm-fields-df_emailaddress" class="se-label se-required">E-mailová adresa</label>
		<input type="text" placeholder="E-mailová adresa" name="fields[df_emailaddress]" data-emailaddress="1" id="frm-webFormHtmlRenderer-webFormForm-fields-df_emailaddress" required data-nette-rules='[{"op":":filled","msg":"E-mailová adresa je povinné pole."},{"op":":email","msg":"E-mailová adresa je povinné pole."},{"op":"SE20\\Validators\\TypesFormValidator::validateEmailAddress","msg":"E-mailová adresa je povinné pole."}]'>
	</div>
	<div class="se-license-agreement">
		<label class="se-checkbox" for="frm-webFormHtmlRenderer-webFormForm-fields-cf_398">
			<span>
				<input type="checkbox" name="fields[cf_398]" id="frm-webFormHtmlRenderer-webFormForm-fields-cf_398">
			</span>
			<span>
			Chci dostávat aktuální informace o hrozbách, produktech a službách ESETu.
				&nbsp;			</span>
		</label>
	</div>
	<div hidden>
		<label for="frm-webFormHtmlRenderer-webFormForm-fields-cf_407" class="se-label ">Parametry</label>
		<input type="text" name="fields[cf_407]" id="frm-webFormHtmlRenderer-webFormForm-fields-cf_407" value="utm_source=saferkidsonline&utm_medium=form&utm_campaign=jak-ochranit-deti-na-internetu&utm_content=prirucka">
	</div>

			</div>
		</div>

		<div class="se-submit">
			<button type="submit" name="_submit" value="Chci příručku">Chci příručku</button>
		</div>

	</div>

<input type="hidden" name="referrer" id="se-ref-field-id" value=""><input type="hidden" name="sessionid" id="se-sessionid-field" value=""><input type="hidden" name="sessionUid" id="se-sessionUid-field" value=""><input type="hidden" name="_do" value="webFormHtmlRenderer-webFormForm-submit"></form>

<style type="text/css">
#main .entry-content [id^="se-webform-215"] {
    max-width: 500px;	
    margin: 2rem auto !important;
    border-radius: 15px; 
	position: relative;	
	padding: 30px;
	padding-right: 80px;
	background: #eee;
}
	.entry-content [id^="se-webform-215"]  h3 {
		color: #0096a1 !important;
	}
	
	.entry-content [id^="se-webform-215"] .se-submit button {
			background-color: #0096a1 !important;
	}
	
  .entry-content [id^="se-webform-215"] .form-box__btn:hover {background-color: #006567 !important;}
  .entry-content [id^="se-webform-215"] .form-box__ebook-cover {
		position: absolute; width: 140px; right: -100px; transform: rotateZ(5deg); top: 50px;
	  max-width: 140px;
	}
  @media screen and (max-width: 600px) {	  
	  #main .entry-content [id^="se-webform-215"]  {
		  padding-right: 30px;
	  }
    .entry-content [id^="se-webform-215"] .form-box__ebook-cover {
		display: block;
    position: relative;
    transform: translateX(-50%);
    top: auto;
    left: 50%;
    margin-top: 1rem;}  
  }  	
	
	.entry-content [id^="se-webform-215"] .se-license-agreement {
		margin-top: 1rem;
	}
	
</style>
<script>
	var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
var CompositionBehaviorLoader = (function () {
    function CompositionBehaviorLoader() {
        this.popupBehaviorLoader = new PopupBehaviorLoader();
        this.slideupBehaviorLoader = new SlideupBehaviorLoader();
    }
    CompositionBehaviorLoader.prototype.init = function (config, form) {
        var _this = this;
        window.setTimeout(function () {
            if (document.readyState !== 'loading') {
                return _this.load(config, form);
            }
            else {
                document.addEventListener('DOMContentLoaded', function () { return __awaiter(_this, void 0, void 0, function () {
                    return __generator(this, function (_a) {
                        switch (_a.label) {
                            case 0: return [4, this.load(config, form)];
                            case 1:
                                _a.sent();
                                return [2];
                        }
                    });
                }); });
            }
        }, 1);
    };
    CompositionBehaviorLoader.prototype.load = function (config, form) {
        return __awaiter(this, void 0, void 0, function () {
            var composition;
            return __generator(this, function (_a) {
                composition = config.composition;
                if (composition === 'default') {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                if (composition === 'popup') {
                    return [2, this.popupBehaviorLoader.load(config, form)];
                }
                if (composition === 'slide-up') {
                    return [2, this.slideupBehaviorLoader.load(config)];
                }
                return [2, new Promise(function (resolve) {
                        console.log('unknown composition: ' + composition);
                        resolve();
                    })];
            });
        });
    };
    return CompositionBehaviorLoader;
}());
var CompositionCssLoader = (function () {
    function CompositionCssLoader() {
    }
    CompositionCssLoader.loadCompositionCss = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var cssId, link, result;
            return __generator(this, function (_a) {
                cssId = 'se-composition-' + config.composition + '-css';
                if (document.getElementById(cssId)) {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                link = document.createElement('link');
                link.id = cssId;
                link.rel = 'stylesheet';
                link.type = 'text/css';
                link.href = config.rootUrl + '/web-forms-v2/composition-' + config.composition + '.css';
                link.media = 'all';
                result = new Promise(function (resolve) {
                    link.onload = function () {
                        resolve();
                    };
                });
                document.getElementsByTagName('head')[0].appendChild(link);
                return [2, result];
            });
        });
    };
    return CompositionCssLoader;
}());
var PopupBehaviorLoader = (function () {
    function PopupBehaviorLoader() {
    }
    PopupBehaviorLoader.prototype.load = function (config, form) {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        if (PopupBehaviorLoader.isBlocked(config)) {
                            return [2, new Promise(function (resolve) {
                                    resolve();
                                })];
                        }
                        return [4, CompositionCssLoader.loadCompositionCss(config)];
                    case 1:
                        _a.sent();
                        this.setupToggler(config);
                        if (config.expiration.method === 'submitCookie') {
                            form.addEventListener('submit', function () {
                                PopupBehaviorLoader.setBlockingCookie(config, -1);
                                PopupBehaviorLoader.setBlockingCookie(config, 365);
                                return false;
                            });
                        }
                        return [2, new Promise(function (resolve) {
                                resolve();
                            })];
                }
            });
        });
    };
    PopupBehaviorLoader.prototype.setupToggler = function (config) {
        var containerDivId = '#se-webform-popup-'
            + config.formGuid;
        var modal = document.querySelector(containerDivId + " .se-webform-v2-modal");
        var closeButton = document.querySelector(containerDivId + " .se-webform-v2-close-button");
        var toggler = function () {
            modal.style.display = 'block';
            var displayed = modal.classList.toggle("se-webform-v2-show-modal");
            if (!displayed) {
                return;
            }
            if (config.expiration.method === 'cookie') {
                PopupBehaviorLoader.setBlockingCookie(config, config.expiration.value);
            }
            else {
                PopupBehaviorLoader.setBlockingCookie(config, null);
            }
        };
        var windowModalClose = function (event) {
            if (event.target === modal) {
                toggler();
            }
        };
        if (config.trigger.name === 'none') {
            toggler();
        }
        else if (config.trigger.name === 'delay') {
            window.setTimeout(toggler, Number(config.trigger.value).valueOf() * 1000);
        }
        else if (config.trigger.name === 'scroll') {
            document.addEventListener('scroll', function () {
                if (modal.hasAttribute('data-toggled')) {
                    return;
                }
                if (ScrollDisplayDecider.shouldBeDisplayed(config)) {
                    modal.setAttribute('data-toggled', '1');
                    toggler();
                }
            });
        }
        closeButton.addEventListener("click", toggler);
        window.addEventListener("click", windowModalClose);
    };
    PopupBehaviorLoader.isMobile = function () {
        if (navigator.userAgent.match(/Android/i)
            || navigator.userAgent.match(/webOS/i)
            || navigator.userAgent.match(/iPhone/i)
            || navigator.userAgent.match(/iPad/i)
            || navigator.userAgent.match(/iPod/i)
            || navigator.userAgent.match(/BlackBerry/i)
            || navigator.userAgent.match(/Windows Phone/i)) {
            return true;
        }
        return false;
    };
    PopupBehaviorLoader.hidePopupOnMobile = function (config) {
        return (PopupBehaviorLoader.isMobile() && config.hidePopupOnMobile);
    };
    PopupBehaviorLoader.isBlocked = function (config) {
        if (PopupBehaviorLoader.isPreview(config)) {
            return false;
        }
        if (PopupBehaviorLoader.hidePopupOnMobile(config)) {
            return true;
        }
        var webFormBlockerCookieName = PopupBehaviorLoader.getBlockingCookieName(config);
        var result = new RegExp('(?:^|; )'
            + encodeURIComponent(webFormBlockerCookieName)
            + '=([^;]*)').exec(document.cookie);
        var cookieValue = result ? result[1] : null;
        return cookieValue === 'set';
    };
    PopupBehaviorLoader.isPreview = function (config) {
        return window.location.href.startsWith(config.rootUrl);
    };
    PopupBehaviorLoader.getBlockingCookieName = function (config) {
        return 'se-webform-session-' + config.formGuid;
    };
    PopupBehaviorLoader.setBlockingCookie = function (config, days) {
        if (PopupBehaviorLoader.isPreview(config)) {
            return;
        }
        var expires = '';
        if (days !== null) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toUTCString();
        }
        document.cookie
            = PopupBehaviorLoader.getBlockingCookieName(config)
                + "="
                + 'set'
                + expires
                + '; path=/';
    };
    return PopupBehaviorLoader;
}());
var ScrollDisplayDecider = (function () {
    function ScrollDisplayDecider() {
    }
    ScrollDisplayDecider.shouldBeDisplayed = function (config) {
        var isAbsolute = config.trigger.value.indexOf('%') === -1;
        if (isAbsolute) {
            var scrolledTop = document.documentElement.scrollTop || document.body.scrollTop;
            return scrolledTop >= Number(config.trigger.value).valueOf();
        }
        else {
            var h = document.documentElement;
            var b = document.body;
            var percent = (h.scrollTop || b.scrollTop)
                / ((h.scrollHeight || b.scrollHeight) - h.clientHeight)
                * 100;
            return percent >= Number(config.trigger.value).valueOf();
        }
    };
    return ScrollDisplayDecider;
}());
var SlideupBehaviorLoader = (function () {
    function SlideupBehaviorLoader() {
    }
    SlideupBehaviorLoader.prototype.load = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4, CompositionCssLoader.loadCompositionCss(config)];
                    case 1:
                        _a.sent();
                        this.setupToggler(config);
                        return [2, new Promise(function (resolve) {
                                resolve();
                            })];
                }
            });
        });
    };
    SlideupBehaviorLoader.prototype.setupToggler = function (config) {
        var containerDivId = 'se-webform-slideup-'
            + config.formGuid;
        var trigger = document.querySelector('#se-webform-slideup-trigger-' + config.formGuid);
        var container = document.getElementById(containerDivId);
        var availableHeight = screen.availHeight * 0.8;
        if (container.clientHeight >= availableHeight) {
            container.style.height = availableHeight + 'px';
            container.style.overflowY = 'scroll';
        }
        var formCursor = container.clientHeight;
        container.style.bottom = '-' + formCursor + 'px';
        var openId = null;
        function formFrameShow() {
            trigger.classList.toggle('hidden', true);
            formCursor = Math.max(0, formCursor - 20);
            container.style.bottom = '-' + formCursor + 'px';
            if (formCursor <= 0) {
                window.clearInterval(openId);
            }
        }
        trigger.addEventListener('click', function () {
            openId = window.setInterval(formFrameShow, 1);
        });
        if (config.trigger.name === 'delay') {
            var toggler = function () {
                trigger.classList.toggle('hidden', false);
            };
            trigger.classList.toggle('hidden', true);
            window.setTimeout(toggler, Number(config.trigger.value).valueOf() * 1000);
        }
        var closeButton = container.querySelector('.se-webform-v2-slideup-close-button');
        var closeId = null;
        function formFrameHide() {
            formCursor = Math.min(container.clientHeight, formCursor + 20);
            container.style.bottom = '-' + formCursor + 'px';
            if (formCursor >= container.clientHeight) {
                window.clearInterval(closeId);
                trigger.classList.toggle('hidden', false);
            }
        }
        closeButton.addEventListener('click', function () {
            closeId = window.setInterval(formFrameHide, 1);
        });
    };
    return SlideupBehaviorLoader;
}());
var ValidationLoader = (function () {
    function ValidationLoader() {
    }
    ValidationLoader.prototype.init = function (config, form) {
        var _this = this;
        window.setTimeout(function () {
            if (document.readyState !== 'loading') {
                return _this.load(config, form);
            }
            else {
                document.addEventListener('DOMContentLoaded', function () { return __awaiter(_this, void 0, void 0, function () {
                    return __generator(this, function (_a) {
                        switch (_a.label) {
                            case 0: return [4, this.load(config, form)];
                            case 1:
                                _a.sent();
                                return [2];
                        }
                    });
                }); });
            }
        }, 1);
    };
    ValidationLoader.prototype.load = function (config, form) {
        return __awaiter(this, void 0, void 0, function () {
            var ready;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        ready = [
                            this.loadFormValidator(config),
                            this.loadEmailCorrectionSuggesterJs(config),
                            this.loadEmailCorrectionSuggesterCss(config)
                        ];
                        return [4, Promise.all(ready)];
                    case 1:
                        _a.sent();
                        Nette.initForm(form);
                        this.initAutoComplete(config, form);
                        return [2];
                }
            });
        });
    };
    ValidationLoader.prototype.initAutoComplete = function (config, form) {
        new autoComplete({
            selector: form.querySelector('input[data-emailaddress="1"]'),
            minChars: 5,
            delay: 500,
            source: function (term, response) {
                return __awaiter(this, void 0, void 0, function () {
                    var xhr;
                    return __generator(this, function (_a) {
                        xhr = new XMLHttpRequest();
                        xhr.open('GET', config.rootUrl
                            + '/api/v3/email-correction-suggester?emailaddress='
                            + term);
                        xhr.onload = function () {
                            if (xhr.status === 200) {
                                var suggestion = JSON.parse(xhr.responseText).data.suggestion;
                                if (suggestion !== '') {
                                    response([suggestion]);
                                }
                            }
                        };
                        xhr.send();
                        return [2];
                    });
                });
            }
        });
    };
    ValidationLoader.prototype.loadEmailCorrectionSuggesterCss = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var cssId, link, result;
            return __generator(this, function (_a) {
                cssId = 'se-autocomplete-css';
                if (document.getElementById(cssId)) {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                link = document.createElement('link');
                link.id = cssId;
                link.rel = 'stylesheet';
                link.type = 'text/css';
                link.href = config.rootUrl + '/web-forms-v2/auto-complete.css';
                link.media = 'all';
                result = new Promise(function (resolve) {
                    link.onload = function () {
                        resolve();
                    };
                });
                document.getElementsByTagName('head')[0].appendChild(link);
                return [2, result];
            });
        });
    };
    ValidationLoader.prototype.loadEmailCorrectionSuggesterJs = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var script, result;
            return __generator(this, function (_a) {
                if (typeof autoComplete !== 'undefined') {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                script = document.createElement('script');
                script.src = config.rootUrl + '/web-forms-v2/auto-complete.min.js';
                script.async = true;
                script.defer = true;
                result = new Promise(function (resolve) {
                    script.onload = function () {
                        resolve();
                    };
                });
                document.head.appendChild(script);
                return [2, result];
            });
        });
    };
    ValidationLoader.prototype.loadFormValidator = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var script, result;
            return __generator(this, function (_a) {
                if (typeof Nette !== 'undefined') {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                Nette = {
                    noInit: true,
                    initForm: function () {
                    }
                };
                script = document.createElement('script');
                script.src = config.rootUrl + '/web-forms-v2/netteForms.min.js';
                script.async = true;
                script.defer = true;
                result = new Promise(function (resolve) {
                    script.onload = function () {
                        resolve();
                    };
                });
                document.head.appendChild(script);
                return [2, result];
            });
        });
    };
    return ValidationLoader;
}());
var WebFormLoader = (function () {
    function WebFormLoader() {
        this.validationLoader = new ValidationLoader();
        this.compositionBehaviorLoader = new CompositionBehaviorLoader();
    }
    WebFormLoader.prototype.run = function (config) {
        var _this = this;
        window.setTimeout(function () {
            var script = document.createElement('script');
            script.onload = function () {
                if (document.readyState !== 'loading') {
                    return _this.render(config);
                }
                else {
                    document.addEventListener('DOMContentLoaded', function () { return __awaiter(_this, void 0, void 0, function () {
                        return __generator(this, function (_a) {
                            switch (_a.label) {
                                case 0: return [4, this.render(config)];
                                case 1:
                                    _a.sent();
                                    return [2];
                            }
                        });
                    }); });
                }
            };
            script.src = 'https://cdn.polyfill.io/v2/polyfill.min.js?features=es6';
            document.head.appendChild(script);
        }, 1);
    };
    WebFormLoader.prototype.loadDefaultValuesFromUrl = function (form) {
        var _a;
        var urlParams = (new URL(document.location.toString())).searchParams;
        var dfInputs = Array.from(form.querySelectorAll('input[name^="fields[df_"]'));
        for (var i in dfInputs) {
            var input = dfInputs[i];
            var inputName = input.name;
            var exec = /fields\[(\w+)\]/i.exec(inputName);
            var fieldName = (_a = exec[1]) !== null && _a !== void 0 ? _a : null;
            if (fieldName === null) {
                continue;
            }
            var urlParam = urlParams.get('_se_' + fieldName);
            if (urlParam === null) {
                continue;
            }
            try {
                input.setAttribute('value', window.atob(urlParam));
            }
            catch (e) {
                console.log(e);
            }
        }
    };
    WebFormLoader.prototype.render = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var formHtml, form;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4, this.loadForm(config)];
                    case 1:
                        formHtml = _a.sent();
                        form = WebFormLoader.insertFormToDom(config, formHtml);
                        this.setupTrackingInputsSession();
                        return [4, Promise.all([
                                this.compositionBehaviorLoader.init(config, form),
                                this.validationLoader.init(config, form)
                            ])];
                    case 2:
                        _a.sent();
                        this.loadDefaultValuesFromUrl(form);
                        return [2];
                }
            });
        });
    };
    WebFormLoader.prototype.setupTrackingInputsSession = function () {
        var w = window;
        w._ssaq = w._ssaq || [];
        w._ssaq.push(['getSessionId', function (sessionId) {
                document.getElementById('se-sessionid-field').value = sessionId;
                document.getElementById('se-sessionUid-field').value = sessionId;
            }]);
    };
    WebFormLoader.insertFormToDom = function (config, formHtml) {
        var node = document.createElement("div");
        node.innerHTML = formHtml;
        if (config.composition === 'slide-up' || config.composition === 'popup') {
            document.body.appendChild(node);
        }
        else {
            var scriptTag = document.getElementById('se-webformScriptLoader-'
                + config.accountId
                + '-'
                + config.formGuid);
            if (scriptTag === null) {
                scriptTag = document.getElementById('se-webformScriptLoader-'
                    + config.formGuid);
            }
            scriptTag.parentNode.insertBefore(node, scriptTag.nextSibling);
        }
        return node.getElementsByTagName('form')[0];
    };
    WebFormLoader.prototype.loadForm = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var xhr, result;
            return __generator(this, function (_a) {
                xhr = new XMLHttpRequest();
                xhr.open('GET', config.rootUrl
                    + '/public/web-forms-v2/load-form-html-wrapper/'
                    + config.accountId
                    + '-'
                    + config.formGuid);
                result = new Promise(function (resolve) {
                    xhr.onload = function () {
                        if (xhr.status === 200) {
                            resolve(xhr.responseText);
                        }
                        else {
                            resolve('');
                        }
                    };
                });
                xhr.send();
                return [2, result];
            });
        });
    };
    return WebFormLoader;
}());

	var loader = new WebFormLoader();
	var config = {
		rootUrl: "https://app.smartemailing.cz/",
		accountId: 15587,
		hidePopupOnMobile: true,
		formGuid: "twu5wlrvw7tc1l69261yxcvsmg032ozpsswhyrcatdorhpdc0bkb1prpxwjge0cmolz95k3f59a5ui56trdrtv7g9ho37g7oa560",
		composition: "default",
		trigger: {
			name: "none",
			value: null
		},
		expiration: {
			method: "submitCookie",
			value: 30
		}
	};
	var form = document.getElementById('se-webform-' + 215);
	loader.validationLoader.init(
		config,
		form
	);
	loader.compositionBehaviorLoader.init(
		config,
		form
	)
	loader.loadDefaultValuesFromUrl(
		form
	);
</script>

<h2 id="mely-by-aplikace-obsahovat-bezpecnostni-upozorneni">Měly by aplikace obsahovat bezpečnostní upozornění?</h2>
<p>Aplikace pro chytré telefony jsou pro naše děti vstupní branou do digitálního světa. Mohou je však také vystavit <a href="https://dvojklik.cz/saferkidsonline/vliv-reklam-na-deti-proc-je-dulezite-naucit-se-kriticky-myslet/">podvodné reklamě</a>, nevhodnému obsahu a bezpečnostním rizikům. Ochrana dat, které aplikace používá, obvykle není to první, co řešíme. Přitom je mnoho aplikací <strong>sbírá i data, která nepotřebuje</strong>.</p>
<p>Studie společnosti <a href="https://blog.incogni.com/children-android-app-research/">Incogni</a> analyzovala 74 aplikací určených dětem (všechny byly vytvořené pro operačním systém Android). Závěry nejsou pozitivní:</p>
<ul>
<li>Téměř polovina (34) shromažďuje alespoň nějaké údaje o uživateli</li>
<li>11 aplikací shromažďuje alespoň 7 nebo více údajů, včetně polohy, e-mailových adres, historie nákupů a interakcí s aplikací.</li>
<li>Pouze 62 % aplikací shromažďujících údaje umožňovalo uživatelům požádat o vymazání nasbíraných dat.</li>
<li>Vývojáři tvrdili, že důvodem shromažďování těchto údajů jsou především analytické účely, funkčnost aplikace, prevence podvodů a reklama nebo marketing.</li>
</ul>
<p>Jiná <a href="https://blog.incogni.com/children-android-app-research/">studie aplikací pro iOS</a> určených pro děti do 12 let zjistila, že<strong> všechny sdílely údaje uživatelů</strong> s různou mírou citlivosti mimo aplikaci. A 44 % z nich odeslalo alespoň jeden osobní údaj třetím stranám. Přibližně 65 % sdílelo údaje s třetími stranami, které poskytují reklamu nebo analytiku pro komerční účely.</p>
<h3 id="co-rika-zakon-o-ochrane-deti">Co říká zákon o ochraně dětí?</h3>
<p>Zákony jsou v tomto ohledu poměrně přísné, obzvláště pokud se bavíme o zpracování dat dětí a cílení reklamy na nezletilé uživatele. V Evropské unii platí GDPR, v tomto nařízení je několik paragrafů, které se<strong> věnují specificky ochraně dat dětí</strong>. S výjimkou preventivních a poradenských služeb je tak nutný souhlas rodiče se zpracováním osobních údajů.</p>
<p>Vyžaduje také, aby nastavení ochrany osobních údajů <strong>odpovídalo věku dětí,</strong> byly snadno pochopitelné, a aby vývojáři pravidelně vyhodnocovali a zmírňovali rizika související s ochranou údajů. Což se bohužel často neděje.</p>
<h2 id="na-co-si-dat-pozor-v-mobilnich-hrach-pro-deti">Na co si dát pozor v mobilních hrách pro děti?</h2>
<ol>
<li><strong>Nadměrný sběr dat</strong>: Osobní údaje, jako je věk, e-mailová adresa a umístění a aktivita v aplikaci, jsou pro inzerenty zlatý důl. Sdílení těchto dat bez souhlasu ale není v pořádku. Zbytečně se tak zvyšuje digitální stopa, kterou za sebou děti ve virtuálním prostoru zanechávají.</li>
<li><strong>Bezohledná reklama</strong>: Reklamy zaměřené zejména na malé děti mohou zneužívat jejich neschopnosti rozpoznat inzerci. Reklamy by také mohly obsahovat nevhodný obsah.</li>
<li><strong>Nákupy v aplikacích</strong>: Některé aplikace &#8211; zejména pak hry &#8211; umožňují uživatelům <a href="https://dvojklik.cz/saferkidsonline/nakupy-v-aplikacich-jak-k-nim-pristupovat-bezpecne/">nakupovat, aniž by museli aplikaci opustit</a>. Děti mohou být náchylnější k utrácení peněz &#8211; což by vás jako rodiče mohlo v konečném důsledku přijít draho.</li>
<li><strong>Omezené informace o ochraně osobních údajů</strong>: Aplikace pro děti mohou mít neprůhledné zásady ochrany soukromí, z nichž není jasné, co se bude s daty dít nebo jak je aplikace bude chránit<strong>.</strong></li>
<li><strong>Nadměrné sdílení</strong>: Některé aplikace nabízejí dětem jen neomezené možnosti, co o sobě lze sdílet, což je vystavuje riziku ze strany kyberšikany, zlodějů dat a podvodníků.</li>
<li><strong>Nevhodný obsah:</strong> Aplikace mohou dětem umožnit přístup k obsahu nevhodnému pro jejich věk, včetně obsahu sdíleného jinými uživateli. Sociálně sítě jsou obzvláště rizikové vzhledem k velkému počtu uživatelů, kteří sdílejí obrázky a videa. Může trvat dlouho, než moderátoři zachytí a odstraní takový násilný, rizikový nebo příliš sexuální obsah.</li>
<li><strong>Bezpečnostní rizika</strong>: Mobilní aplikace mohou obsahovat zranitelnosti. Ty mohou zneužít kyberútočníci a ukrást údaje vašeho dítěte, včetně přihlašovacích údajů do aplikací, přihlásit je k placeným službám nebo se zmocnit jejich účtů na sociálních sítích a herních účtech.</li>
</ol>
<h2 id="jak-lze-pouzivat-aplikace-bezpecne">Jak lze používat aplikace bezpečně?</h2>
<p>Jako rodiče hrajete zásadní roli při ochraně soukromí vašeho dítěte. Ukážeme vám jak.</p>
<ol>
<li><strong>Mluvte s dětmi: </strong>Mluvte s dětmi tom, jak je důležité si svoje data chránit. Buďte maximálně otevření debatě – aby děti měly jistotu, že prvním, za kým s problémy mohou přijít, jste vy.
<div class="pk-content-block pk-block-border-all pk-block-shadows" style="text-align: center;"><strong>TIP</strong>: <a href="https://dvojklik.cz/saferkidsonline/proc-je-dulezite-mluvit-s-detmi-i-o-kyber-bezpecnosti/">Proč je důležité mluvit s dětmi i o kyber bezpečnosti?</a></div>
</li>
<li><strong>Udělejte si průzkum: </strong>Než dítěti dovolíte stáhnout si nějakou aplikaci, vždy si ji prověřte. Zkontrolujte jejich zásady ochrany osobních údajů, recenze a obsah.</li>
</ol>
<form
	  name="cz_b2c_mql_skocards"
		target="_blank"
		method="post"
		id="se-webform-218"		
 target="_self" class="se-webform-218 se-webform" action="https://app.smartemailing.cz/public/web-forms-v2/display-form/15587-36k7s31e01dr0uzrx8moorjq3c1k1zq9nqstmh8z2mhu61mm4g7az7cbbll2r4m4bhgaaj5t0e371e6ogrh5xdzfdyshgz4xgavq">

<img decoding="async" class="form-box__ebook-cover" src="https://dvojklik.cz/wp-content/uploads/2024/02/cards-deck-preview.png" style="box-shadow: none;" />
	<div class="se-webform-inner">
		<div class="se-header">
			<h3 id="stahnout-konverzacni-karty-pro-deti-a-rodice">
				Stáhnout Konverzační karty pro děti a rodiče
			</h3>
		</div>

		<div class="se-body">
			<div>
	<div>
		<label hidden for="frm-webFormHtmlRenderer-webFormForm-fields-df_emailaddress" class="se-label se-required">E-mailová adresa</label>
		<input type="text" placeholder="E-mailová adresa" name="fields[df_emailaddress]" data-emailaddress="1" id="frm-webFormHtmlRenderer-webFormForm-fields-df_emailaddress" required data-nette-rules='[{"op":":filled","msg":"E-mailová adresa je povinné pole."},{"op":":email","msg":"E-mailová adresa je povinné pole."},{"op":"SE20\\Validators\\TypesFormValidator::validateEmailAddress","msg":"E-mailová adresa je povinné pole."}]'>
	</div>
	<div class="se-license-agreement">
		<label class="se-checkbox" for="frm-webFormHtmlRenderer-webFormForm-fields-cf_359">
			<span>
				<input type="checkbox" name="fields[cf_359]" id="frm-webFormHtmlRenderer-webFormForm-fields-cf_359">
			</span>
			<span>
			Chci odebírat magazín Safer Kids Online. Praktické tipy pro&nbsp; bezpečnost dětí na internetu.
				&nbsp;			</span>
		</label>
	</div>
	<div hidden>
		<label for="frm-webFormHtmlRenderer-webFormForm-fields-cf_407" class="se-label ">Parametry</label>
		<input type="text" name="fields[cf_407]" id="frm-webFormHtmlRenderer-webFormForm-fields-cf_407" value="utm_source=saferkidsonline&utm_medium=form&utm_campaign=konverzacni-karty-pro-deti-a-rodice">
	</div>

			</div>
		</div>

		<div class="se-submit">
			<button type="submit" name="_submit" value="Chci kartičky">Chci kartičky</button>
		</div>

	</div>

<input type="hidden" name="referrer" id="se-ref-field-id" value=""><input type="hidden" name="sessionid" id="se-sessionid-field" value=""><input type="hidden" name="sessionUid" id="se-sessionUid-field" value=""><input type="hidden" name="_do" value="webFormHtmlRenderer-webFormForm-submit"></form>

<style type="text/css">
#main .entry-content [id^="se-webform-218"] {
    max-width: 500px;	
    margin: 2rem auto !important;
    border-radius: 15px; 
	position: relative;	
	padding: 30px;
	padding-right: 80px;
	background: #eee;
}
	.entry-content [id^="se-webform-218"]  h3 {
		color: #0096a1 !important;
	}
	
	.entry-content [id^="se-webform-218"] .se-submit button {
			background-color: #0096a1 !important;
	}
	
  .entry-content [id^="se-webform-218"] .form-box__btn:hover {background-color: #006567 !important;}
  .entry-content [id^="se-webform-218"] .form-box__ebook-cover {
		position: absolute; width: 180px; right: -100px; transform: rotateZ(5deg); top: 50px; max-width: 180px;
	}
  @media screen and (max-width: 600px) {	  
	  #main .entry-content [id^="se-webform-218"]  {
		  padding-right: 30px;
	  }
    .entry-content [id^="se-webform-218"] .form-box__ebook-cover {
		display: block;
    position: relative;
    transform: translateX(-50%);
    top: auto;
    left: 50%;
    margin-top: 1rem;}  
  }  	
	
	.entry-content [id^="se-webform-218"] .se-license-agreement {
		margin-top: 1rem;
	}
	
</style>

<script>
	var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
var CompositionBehaviorLoader = (function () {
    function CompositionBehaviorLoader() {
        this.popupBehaviorLoader = new PopupBehaviorLoader();
        this.slideupBehaviorLoader = new SlideupBehaviorLoader();
    }
    CompositionBehaviorLoader.prototype.init = function (config, form) {
        var _this = this;
        window.setTimeout(function () {
            if (document.readyState !== 'loading') {
                return _this.load(config, form);
            }
            else {
                document.addEventListener('DOMContentLoaded', function () { return __awaiter(_this, void 0, void 0, function () {
                    return __generator(this, function (_a) {
                        switch (_a.label) {
                            case 0: return [4, this.load(config, form)];
                            case 1:
                                _a.sent();
                                return [2];
                        }
                    });
                }); });
            }
        }, 1);
    };
    CompositionBehaviorLoader.prototype.load = function (config, form) {
        return __awaiter(this, void 0, void 0, function () {
            var composition;
            return __generator(this, function (_a) {
                composition = config.composition;
                if (composition === 'default') {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                if (composition === 'popup') {
                    return [2, this.popupBehaviorLoader.load(config, form)];
                }
                if (composition === 'slide-up') {
                    return [2, this.slideupBehaviorLoader.load(config)];
                }
                return [2, new Promise(function (resolve) {
                        console.log('unknown composition: ' + composition);
                        resolve();
                    })];
            });
        });
    };
    return CompositionBehaviorLoader;
}());
var CompositionCssLoader = (function () {
    function CompositionCssLoader() {
    }
    CompositionCssLoader.loadCompositionCss = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var cssId, link, result;
            return __generator(this, function (_a) {
                cssId = 'se-composition-' + config.composition + '-css';
                if (document.getElementById(cssId)) {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                link = document.createElement('link');
                link.id = cssId;
                link.rel = 'stylesheet';
                link.type = 'text/css';
                link.href = config.rootUrl + '/web-forms-v2/composition-' + config.composition + '.css';
                link.media = 'all';
                result = new Promise(function (resolve) {
                    link.onload = function () {
                        resolve();
                    };
                });
                document.getElementsByTagName('head')[0].appendChild(link);
                return [2, result];
            });
        });
    };
    return CompositionCssLoader;
}());
var PopupBehaviorLoader = (function () {
    function PopupBehaviorLoader() {
    }
    PopupBehaviorLoader.prototype.load = function (config, form) {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        if (PopupBehaviorLoader.isBlocked(config)) {
                            return [2, new Promise(function (resolve) {
                                    resolve();
                                })];
                        }
                        return [4, CompositionCssLoader.loadCompositionCss(config)];
                    case 1:
                        _a.sent();
                        this.setupToggler(config);
                        if (config.expiration.method === 'submitCookie') {
                            form.addEventListener('submit', function () {
                                PopupBehaviorLoader.setBlockingCookie(config, -1);
                                PopupBehaviorLoader.setBlockingCookie(config, 365);
                                return false;
                            });
                        }
                        return [2, new Promise(function (resolve) {
                                resolve();
                            })];
                }
            });
        });
    };
    PopupBehaviorLoader.prototype.setupToggler = function (config) {
        var containerDivId = '#se-webform-popup-'
            + config.formGuid;
        var modal = document.querySelector(containerDivId + " .se-webform-v2-modal");
        var closeButton = document.querySelector(containerDivId + " .se-webform-v2-close-button");
        var toggler = function () {
            modal.style.display = 'block';
            var displayed = modal.classList.toggle("se-webform-v2-show-modal");
            if (!displayed) {
                return;
            }
            if (config.expiration.method === 'cookie') {
                PopupBehaviorLoader.setBlockingCookie(config, config.expiration.value);
            }
            else {
                PopupBehaviorLoader.setBlockingCookie(config, null);
            }
        };
        var windowModalClose = function (event) {
            if (event.target === modal) {
                toggler();
            }
        };
        if (config.trigger.name === 'none') {
            toggler();
        }
        else if (config.trigger.name === 'delay') {
            window.setTimeout(toggler, Number(config.trigger.value).valueOf() * 1000);
        }
        else if (config.trigger.name === 'scroll') {
            document.addEventListener('scroll', function () {
                if (modal.hasAttribute('data-toggled')) {
                    return;
                }
                if (ScrollDisplayDecider.shouldBeDisplayed(config)) {
                    modal.setAttribute('data-toggled', '1');
                    toggler();
                }
            });
        }
        closeButton.addEventListener("click", toggler);
        window.addEventListener("click", windowModalClose);
    };
    PopupBehaviorLoader.isMobile = function () {
        if (navigator.userAgent.match(/Android/i)
            || navigator.userAgent.match(/webOS/i)
            || navigator.userAgent.match(/iPhone/i)
            || navigator.userAgent.match(/iPad/i)
            || navigator.userAgent.match(/iPod/i)
            || navigator.userAgent.match(/BlackBerry/i)
            || navigator.userAgent.match(/Windows Phone/i)) {
            return true;
        }
        return false;
    };
    PopupBehaviorLoader.hidePopupOnMobile = function (config) {
        return (PopupBehaviorLoader.isMobile() && config.hidePopupOnMobile);
    };
    PopupBehaviorLoader.isBlocked = function (config) {
        if (PopupBehaviorLoader.isPreview(config)) {
            return false;
        }
        if (PopupBehaviorLoader.hidePopupOnMobile(config)) {
            return true;
        }
        var webFormBlockerCookieName = PopupBehaviorLoader.getBlockingCookieName(config);
        var result = new RegExp('(?:^|; )'
            + encodeURIComponent(webFormBlockerCookieName)
            + '=([^;]*)').exec(document.cookie);
        var cookieValue = result ? result[1] : null;
        return cookieValue === 'set';
    };
    PopupBehaviorLoader.isPreview = function (config) {
        return window.location.href.startsWith(config.rootUrl);
    };
    PopupBehaviorLoader.getBlockingCookieName = function (config) {
        return 'se-webform-session-' + config.formGuid;
    };
    PopupBehaviorLoader.setBlockingCookie = function (config, days) {
        if (PopupBehaviorLoader.isPreview(config)) {
            return;
        }
        var expires = '';
        if (days !== null) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toUTCString();
        }
        document.cookie
            = PopupBehaviorLoader.getBlockingCookieName(config)
                + "="
                + 'set'
                + expires
                + '; path=/';
    };
    return PopupBehaviorLoader;
}());
var ScrollDisplayDecider = (function () {
    function ScrollDisplayDecider() {
    }
    ScrollDisplayDecider.shouldBeDisplayed = function (config) {
        var isAbsolute = config.trigger.value.indexOf('%') === -1;
        if (isAbsolute) {
            var scrolledTop = document.documentElement.scrollTop || document.body.scrollTop;
            return scrolledTop >= Number(config.trigger.value).valueOf();
        }
        else {
            var h = document.documentElement;
            var b = document.body;
            var percent = (h.scrollTop || b.scrollTop)
                / ((h.scrollHeight || b.scrollHeight) - h.clientHeight)
                * 100;
            return percent >= Number(config.trigger.value).valueOf();
        }
    };
    return ScrollDisplayDecider;
}());
var SlideupBehaviorLoader = (function () {
    function SlideupBehaviorLoader() {
    }
    SlideupBehaviorLoader.prototype.load = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4, CompositionCssLoader.loadCompositionCss(config)];
                    case 1:
                        _a.sent();
                        this.setupToggler(config);
                        return [2, new Promise(function (resolve) {
                                resolve();
                            })];
                }
            });
        });
    };
    SlideupBehaviorLoader.prototype.setupToggler = function (config) {
        var containerDivId = 'se-webform-slideup-'
            + config.formGuid;
        var trigger = document.querySelector('#se-webform-slideup-trigger-' + config.formGuid);
        var container = document.getElementById(containerDivId);
        var availableHeight = screen.availHeight * 0.8;
        if (container.clientHeight >= availableHeight) {
            container.style.height = availableHeight + 'px';
            container.style.overflowY = 'scroll';
        }
        var formCursor = container.clientHeight;
        container.style.bottom = '-' + formCursor + 'px';
        var openId = null;
        function formFrameShow() {
            trigger.classList.toggle('hidden', true);
            formCursor = Math.max(0, formCursor - 20);
            container.style.bottom = '-' + formCursor + 'px';
            if (formCursor <= 0) {
                window.clearInterval(openId);
            }
        }
        trigger.addEventListener('click', function () {
            openId = window.setInterval(formFrameShow, 1);
        });
        if (config.trigger.name === 'delay') {
            var toggler = function () {
                trigger.classList.toggle('hidden', false);
            };
            trigger.classList.toggle('hidden', true);
            window.setTimeout(toggler, Number(config.trigger.value).valueOf() * 1000);
        }
        var closeButton = container.querySelector('.se-webform-v2-slideup-close-button');
        var closeId = null;
        function formFrameHide() {
            formCursor = Math.min(container.clientHeight, formCursor + 20);
            container.style.bottom = '-' + formCursor + 'px';
            if (formCursor >= container.clientHeight) {
                window.clearInterval(closeId);
                trigger.classList.toggle('hidden', false);
            }
        }
        closeButton.addEventListener('click', function () {
            closeId = window.setInterval(formFrameHide, 1);
        });
    };
    return SlideupBehaviorLoader;
}());
var ValidationLoader = (function () {
    function ValidationLoader() {
    }
    ValidationLoader.prototype.init = function (config, form) {
        var _this = this;
        window.setTimeout(function () {
            if (document.readyState !== 'loading') {
                return _this.load(config, form);
            }
            else {
                document.addEventListener('DOMContentLoaded', function () { return __awaiter(_this, void 0, void 0, function () {
                    return __generator(this, function (_a) {
                        switch (_a.label) {
                            case 0: return [4, this.load(config, form)];
                            case 1:
                                _a.sent();
                                return [2];
                        }
                    });
                }); });
            }
        }, 1);
    };
    ValidationLoader.prototype.load = function (config, form) {
        return __awaiter(this, void 0, void 0, function () {
            var ready;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        ready = [
                            this.loadFormValidator(config),
                            this.loadEmailCorrectionSuggesterJs(config),
                            this.loadEmailCorrectionSuggesterCss(config)
                        ];
                        return [4, Promise.all(ready)];
                    case 1:
                        _a.sent();
                        Nette.initForm(form);
                        this.initAutoComplete(config, form);
                        return [2];
                }
            });
        });
    };
    ValidationLoader.prototype.initAutoComplete = function (config, form) {
        new autoComplete({
            selector: form.querySelector('input[data-emailaddress="1"]'),
            minChars: 5,
            delay: 500,
            source: function (term, response) {
                return __awaiter(this, void 0, void 0, function () {
                    var xhr;
                    return __generator(this, function (_a) {
                        xhr = new XMLHttpRequest();
                        xhr.open('GET', config.rootUrl
                            + '/api/v3/email-correction-suggester?emailaddress='
                            + term);
                        xhr.onload = function () {
                            if (xhr.status === 200) {
                                var suggestion = JSON.parse(xhr.responseText).data.suggestion;
                                if (suggestion !== '') {
                                    response([suggestion]);
                                }
                            }
                        };
                        xhr.send();
                        return [2];
                    });
                });
            }
        });
    };
    ValidationLoader.prototype.loadEmailCorrectionSuggesterCss = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var cssId, link, result;
            return __generator(this, function (_a) {
                cssId = 'se-autocomplete-css';
                if (document.getElementById(cssId)) {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                link = document.createElement('link');
                link.id = cssId;
                link.rel = 'stylesheet';
                link.type = 'text/css';
                link.href = config.rootUrl + '/web-forms-v2/auto-complete.css';
                link.media = 'all';
                result = new Promise(function (resolve) {
                    link.onload = function () {
                        resolve();
                    };
                });
                document.getElementsByTagName('head')[0].appendChild(link);
                return [2, result];
            });
        });
    };
    ValidationLoader.prototype.loadEmailCorrectionSuggesterJs = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var script, result;
            return __generator(this, function (_a) {
                if (typeof autoComplete !== 'undefined') {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                script = document.createElement('script');
                script.src = config.rootUrl + '/web-forms-v2/auto-complete.min.js';
                script.async = true;
                script.defer = true;
                result = new Promise(function (resolve) {
                    script.onload = function () {
                        resolve();
                    };
                });
                document.head.appendChild(script);
                return [2, result];
            });
        });
    };
    ValidationLoader.prototype.loadFormValidator = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var script, result;
            return __generator(this, function (_a) {
                if (typeof Nette !== 'undefined') {
                    return [2, new Promise(function (resolve) {
                            resolve();
                        })];
                }
                Nette = {
                    noInit: true,
                    initForm: function () {
                    }
                };
                script = document.createElement('script');
                script.src = config.rootUrl + '/web-forms-v2/netteForms.min.js';
                script.async = true;
                script.defer = true;
                result = new Promise(function (resolve) {
                    script.onload = function () {
                        resolve();
                    };
                });
                document.head.appendChild(script);
                return [2, result];
            });
        });
    };
    return ValidationLoader;
}());
var WebFormLoader = (function () {
    function WebFormLoader() {
        this.validationLoader = new ValidationLoader();
        this.compositionBehaviorLoader = new CompositionBehaviorLoader();
    }
    WebFormLoader.prototype.run = function (config) {
        var _this = this;
        window.setTimeout(function () {
            var script = document.createElement('script');
            script.onload = function () {
                if (document.readyState !== 'loading') {
                    return _this.render(config);
                }
                else {
                    document.addEventListener('DOMContentLoaded', function () { return __awaiter(_this, void 0, void 0, function () {
                        return __generator(this, function (_a) {
                            switch (_a.label) {
                                case 0: return [4, this.render(config)];
                                case 1:
                                    _a.sent();
                                    return [2];
                            }
                        });
                    }); });
                }
            };
            script.src = 'https://cdn.polyfill.io/v2/polyfill.min.js?features=es6';
            document.head.appendChild(script);
        }, 1);
    };
    WebFormLoader.prototype.loadDefaultValuesFromUrl = function (form) {
        var _a;
        var urlParams = (new URL(document.location.toString())).searchParams;
        var dfInputs = Array.from(form.querySelectorAll('input[name^="fields[df_"]'));
        for (var i in dfInputs) {
            var input = dfInputs[i];
            var inputName = input.name;
            var exec = /fields\[(\w+)\]/i.exec(inputName);
            var fieldName = (_a = exec[1]) !== null && _a !== void 0 ? _a : null;
            if (fieldName === null) {
                continue;
            }
            var urlParam = urlParams.get('_se_' + fieldName);
            if (urlParam === null) {
                continue;
            }
            try {
                input.setAttribute('value', window.atob(urlParam));
            }
            catch (e) {
                console.log(e);
            }
        }
    };
    WebFormLoader.prototype.render = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var formHtml, form;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4, this.loadForm(config)];
                    case 1:
                        formHtml = _a.sent();
                        form = WebFormLoader.insertFormToDom(config, formHtml);
                        this.setupTrackingInputsSession();
                        return [4, Promise.all([
                                this.compositionBehaviorLoader.init(config, form),
                                this.validationLoader.init(config, form)
                            ])];
                    case 2:
                        _a.sent();
                        this.loadDefaultValuesFromUrl(form);
                        return [2];
                }
            });
        });
    };
    WebFormLoader.prototype.setupTrackingInputsSession = function () {
        var w = window;
        w._ssaq = w._ssaq || [];
        w._ssaq.push(['getSessionId', function (sessionId) {
                document.getElementById('se-sessionid-field').value = sessionId;
                document.getElementById('se-sessionUid-field').value = sessionId;
            }]);
    };
    WebFormLoader.insertFormToDom = function (config, formHtml) {
        var node = document.createElement("div");
        node.innerHTML = formHtml;
        if (config.composition === 'slide-up' || config.composition === 'popup') {
            document.body.appendChild(node);
        }
        else {
            var scriptTag = document.getElementById('se-webformScriptLoader-'
                + config.accountId
                + '-'
                + config.formGuid);
            if (scriptTag === null) {
                scriptTag = document.getElementById('se-webformScriptLoader-'
                    + config.formGuid);
            }
            scriptTag.parentNode.insertBefore(node, scriptTag.nextSibling);
        }
        return node.getElementsByTagName('form')[0];
    };
    WebFormLoader.prototype.loadForm = function (config) {
        return __awaiter(this, void 0, void 0, function () {
            var xhr, result;
            return __generator(this, function (_a) {
                xhr = new XMLHttpRequest();
                xhr.open('GET', config.rootUrl
                    + '/public/web-forms-v2/load-form-html-wrapper/'
                    + config.accountId
                    + '-'
                    + config.formGuid);
                result = new Promise(function (resolve) {
                    xhr.onload = function () {
                        if (xhr.status === 200) {
                            resolve(xhr.responseText);
                        }
                        else {
                            resolve('');
                        }
                    };
                });
                xhr.send();
                return [2, result];
            });
        });
    };
    return WebFormLoader;
}());

	var loader = new WebFormLoader();
	var config = {
		rootUrl: "https://app.smartemailing.cz/",
		accountId: 15587,
		hidePopupOnMobile: true,
		formGuid: "36k7s31e01dr0uzrx8moorjq3c1k1zq9nqstmh8z2mhu61mm4g7az7cbbll2r4m4bhgaaj5t0e371e6ogrh5xdzfdyshgz4xgavq",
		composition: "default",
		trigger: {
			name: "none",
			value: null
		},
		expiration: {
			method: "submitCookie",
			value: 30
		}
	};
	var form = document.getElementById('se-webform-' + 218);
	loader.validationLoader.init(
		config,
		form
	);
	loader.compositionBehaviorLoader.init(
		config,
		form
	)
	loader.loadDefaultValuesFromUrl(
		form
	);
</script>

				
<ol start="3">
<li><strong>Používejte aplikace rodičovské kontroly</strong>: Tyto aplikace umožní nastavit filtry, jaké aplikace si děti mohou stáhnout nebo kolik času mohou telefon používat. Vždy jde z dětského zařízení požádat o výjimku. Máte tak jistou kontroly, ale nijak tím nezasahujete do soukromí dětí.
<div class="pk-content-block pk-block-border-all pk-block-shadows" style="text-align: center;"><strong>TIP</strong>: <a href="https://dvojklik.cz/saferkidsonline/aplikace-rodicovske-kontroly-jake-jsou-jejich-vyhody-a-rizika/">Aplikace rodičovské kontroly: Jaké jsou jejich výhody a rizika?</a></div>
</li>
<li><strong>Zaměřte se na bezpečnost</strong>: Stáhněte do zařízení dítěte bezpečnostní software a dbejte na to, aby byly všechny aplikace aktualizované. Zapněte dvoufaktorové ověřování (2FA) u všech aplikací, které ho podporují. A zajistěte, aby vaše dítě stahovalo aplikace pouze z Google Play nebo Appstore.</li>
<li><strong>Blokování reklamy</strong>: Vypněte v chytrém telefonu svého dítěte sledování reklamy. To je možné zapnout v nastavení operačního systému.</li>
<li><strong>Vybírejte aplikace vhodné pro děti</strong>: V zařízeních se systémem Android vyhledejte v Google Play na <a href="https://play.google.com/store/apps/category/FAMILY?pli=1">kartě Děti</a>. Aplikace mají vždy štítek PEGI, který definuje, pro jakou věkovou kategorii jsou určené.</li>
</ol>
<p>Technologie otevírají dětem zcela nový neprozkoumaný svět. Je ale důležité, aby se je také naučily prozkoumávat bezpečně.</p>
<div class="pk-content-block pk-block-border-left"><strong>Přečtěte si také:</strong><br />
⇒ <a href="https://dvojklik.cz/saferkidsonline/jake-dovednosti-si-deti-osvoji-hranim-videoher/">Jaké dovednosti si děti osvojí hraním videoher?</a><br />
⇒ <a href="https://dvojklik.cz/saferkidsonline/proc-je-dulezite-mluvit-s-detmi-i-o-kyber-bezpecnosti/">Proč je důležité mluvit s dětmi i o kyber bezpečnosti?</a><br />
⇒ <a href="https://dvojklik.cz/saferkidsonline/brawl-stars-vse-co-potrebujete-vedet-o-oblibene-hre-vasich-deti/">Brawl Stars: Vše, co potřebujete vědět o oblíbené hře vašich dětí</a></div>
]]></content:encoded>
					
		
		
		<media:content xmlns:media="http://search.yahoo.com/mrss/" medium="image" type="image/jpeg" url="https://www.dvojklik.cz/wp-content/uploads/2024/05/sko-ochrana-dat-hry-240x180.jpg" width="240" height="180" ></media:content>	</item>
	</channel>
</rss>
