在我的页面上,我阻止脚本并想在按下按钮后加载它们。
这已经很好用,例如Google Recaptcha。
当我运行myFunction
时,脚本已加载。
jquery
和popper.js
也是一样>
但是我认为要使用bootstrap下拉列表,不需要重新初始化它。有没有办法解决这个问题?我对此一无所获。
这里是代码:
<script> function blockScript(origin) { const scripts = Array.from(document.getElementsByTagName("SCRIPT")); if (scripts.length > 0) { scripts.forEach((script) => { if (script.src.includes(origin)) { script.setAttribute('data-src', script.src); script.removeAttribute("src"); } }) } } </script> <script> var json = [ { "name" : "Google Recaptcha", "url" : "code.jquery.com", "desc" : "Recaptcha", "rights": "" }, { "name" : "Google Recaptcha", "url" : "www.google.com", "desc" : "Recaptcha", "rights": "" }, { "name" : "Google Recaptcha", "url" : "cdnjs.cloudflare.com", "desc" : "Recaptcha", "rights": "" }]; if(!localStorage.getItem('cc-marketing') == 1){ const observer = new MutationObserver((mutationsList, observer) => { for(let mutation of mutationsList) { const addedNodes = Array.from(mutation.addedNodes); if (addedNodes && addedNodes.some(n => n.nodeName === 'SCRIPT')) { for(var i = 0; i < json.length; i++) { var obj = json[i]; blockScript(obj.url); } } } }); observer.observe(document, { childList: true, subtree: true }); } </script> <script> function myFunction() { // window.localStorage.setItem('cc-marketing', 1); var elements = document.querySelectorAll("[data-src]"); Object.keys(elements).forEach(function(key) { console.log(elements[key].getAttribute('data-src')); elements[key].setAttribute('src', elements[key].getAttribute('data-src')); elements[key].removeAttribute("data-src"); }); } </script> <script integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous" src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <script src="https://www.google.com/recaptcha/api.js?render=MYKEY"></script>
希望您能帮助我,谢谢我前进!
在我的页面上,我阻止脚本并想在按下按钮后加载它们。这已经很好用,例如谷歌recaptcha。当我运行myFunction时,脚本已加载。一样...
问题不在于刷新dom。当您加载脚本时,它将为已加载的dom添加任何侦听器,因此可以正常工作。