2014-02-25 3 views
0

Я пытаюсь понять, что происходит в моем коде.объект документа указывает на документ iframe

Так что я делаю 1. Iframe на странице - указывает на страницу aspx с некоторым javascript. Стоит отметить тот же домен, поэтому никаких проблем с доступом. 2. Код в окне iframe получает объект родительского документа и вводит requirejs в родительский элемент с конфигурацией на месте для загрузки my-custom-code.js 3. поэтому my-custom-code.js загружается в начало родительской страницы и работает нормально.

!!! Это то, чего я не получаю !!! Когда я пытаюсь использовать окно и документ в my-custom-code.js, они на самом деле указывают на документ и окно child (iframe) ???

Итак, я хочу понять, КАК ЭТО РАБОТАЕТ.

Благодаря

UPDATE: IFrame JS файл

var $doc = $(parent.document); 
var head = $doc.find("head"); 
var body = $doc.find("body"); 
var reqConfigScript = "<script class='require-default-config'>var require = { deps: ['http:\/\/localhost/scripts/parent-main.js'], callback: function(main){ } };</script>"; 
body.append(reqConfigScript); 
var parentScript = "<script src='http:\/\/" + location.host + "/scripts/require-2.1.11.min.js' type=\"text/javascript\"></script>"; 
head.append(parentScript); 
+0

Не могли бы вы показать код, который вы должны ввести в свой JS-файл? У меня есть подозрение, но ваш код поможет подтвердить это. –

ответ

1

Хорошо, это немного трудно догадаться, потому что я не знаю точно, как работает библиотека ... но попробуйте это:

parent.require = { 
    deps: ['http:\/\/localhost/scripts/parent-main.js'], 
    callback: function(main){ } 
}; 
var parentScript = parent.document.createElement('script'); 
// important to use `parent.document` so the right document owns the script 
parentScript.src = "http://"+location.host+"/script/require-2.1.11.min.js"; 
parentScript.type = "text/javascript"; 
parent.document.body.appendChild(parentScript); 
+0

Nice 1, теперь я получаю родительский объект документа внутри скрипта. Но вопрос по-прежнему остается - ПОЧЕМУ? :) – Pavdro

+0

Поскольку документ владельца сценария был неправильным. Этот метод гарантирует правильность владельца. Думаю, библиотека, которую вы используете, не планировала использовать этот случай. Вот почему [Vanilla JS] (http://vanilla-js.com/) настолько замечателен: p –

+0

lol, на секунду я подумал, что это настоящая структура: DDD хорошо, спасибо большое! – Pavdro

Смежные вопросы