В настоящее время я создаю расширение для 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>