В настоящее время я создаю виджет, который будет асинхронно загружать JS файл, который, в свою очередь, будет создавать IFrame соответственно, моя текущая проблема - это местоположение, где создается Iframe. Мне нужно создать IFrame в родительский узел, который неизвестен.
Проблема в том, что загружаемая JS (везде, где она вставлена на странице example.html) не загружает IFrame в родительский элемент. Мне нужно, чтобы он последовательно загружал IFrame в родительский элемент, где наклеен фрагмент JS.
example.html
<script type="text/javascript">
var uid = "1";
(function(){
var m = document.createElement('script');
m.type = 'text/javascript';
m.async = 'true';
m.src = 'http://www.site.com/widget/widget.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(m, s);
})();
</script>
Widget.js
(function createFrame(){
var iframe = document.createElement("iframe");
iframe.id = "jobBoard";
iframe.width = 100+"%";
iframe.height = 100+"%";
iframe.frameborder = "0";
iframe.scrolling = "no";
iframe.marginheight="0" ;
iframe.marginwidth="0";
iframe.frameborder="0"
iframe.setAttribute("style","width:100%; height:100%; background-color:#FFF; border:none;padding:0 0 0 0; overflow-y: hidden; overflow:; -ms-overflow-y: hidden; -ms-overflow-x: hidden;");
loc = "http://www.site.com/widget/open-jobs?uid=" + uid;
iframe.src = loc;
var scriptTags = document.getElementsByTagName('script');
var i = scriptTags.length;
while (i--) {
if (scriptTags[i].src.indexOf('site.com') >= 0) {
alert(scriptTags[i].parentNode)
scriptTags[i].parentNode.appendChild(iframe);
i = 0;
}
}
})();
То, что вы хотите, - document.currentScript
. Не самая большая поддержка.
Позвольте мне что-то взломать:
)();
с конца