Загрузить Iframe в расширение Chrome - PullRequest
0 голосов
/ 27 сентября 2018

В настоящее время я создаю расширение для Chrome, и у меня возникают проблемы с загрузкой iframe.Iframe содержит несколько встроенных скриптов, которые необходимо выполнить.Но он говорит, что отказался выполнять встроенные сценарии, потому что нарушает свойства.

content-script.js

chrome.runtime.sendMessage(message, function (response) {
        fetch(chrome.extension.getURL('page_content/password-element-template.html'))
        .then(res => res.text()).then(data => {
            let iframe =  document.createElement('iframe');
            iframe.id = 'pwm_iframe';
            iframe.src = chrome.extension.getURL('/page_content/password-element-template.html');//'data:text/html;charset=utf-8,' + encodeURI(data);
            iframe.style = 'border: none !important; position: relative !important; height: 100% !important; width: 100% !important; visibility: visible !important; display: block !important'; 
            pass_field.wrap('<div id="passwords-container"></div>');
            jQuery('#passwords-container').append(iframe);
            jQuery('#passwords').width(jQuery('input[type=password]').width());
            // chrome.extension.getURL('/dist/password-eleement-template.html')
            //console.log(document.getElementById('pwm_iframe'));
            document.getElementById('pwm_iframe').onload = function() {
                document.getElementById('pwm_iframe').contentWindow.postMessage(response, '*');
            }
        });
    });  

password-element-template.html

<script type="text/javascript">
        window.onload = function() {
            window.addEventListener('message', function(event) { 
                if (event.origin.indexOf(window.location.url)) { 
                    event.data.forEach(element => {
                        document.getElementById('passwords').appendChild(parseView(element, 'password-template'));
                    });
                } else { 
                    return; 
                } 
            }); 
        };

        document.getElementsByClassName('copy-btn').addEventListener('click', function() {
            this.contentWindow.postMessage(this.copy-data, '*');
        }, false);

        function parseView(object, template_id) {
            let template = document.getElementById(template_id).innerHTML;
            for (const key in object) {
                if(template.indexOf('{{'+key+'}}') != -1) {
                    var regex = new RegExp("{{" + key + "}}", "g");
                    template = template.replace(regex, object[key]);
                }
            }
            var parser = new DOMParser()
            var doc = parser.parseFromString(template, "text/html");
            return doc.body.firstChild;
        }
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...