2014-02-25 76 views
0

我試圖瞭解發生了什麼事在我的代碼。文件對象指向IFRAME文檔

所以我在做什麼是 1的Iframe在頁面 - 點與一些JavaScript aspx頁面。值得注意的是它的同一個域名,所以沒有訪問問題。 2. iframe窗口中的代碼獲取父文檔對象,並將requirejs注入到具有配置的父頭中以加載my-custom-code.js 3. so my-custom-code.js加載到父頁面的頭部並運行良好。

!這是我沒有得到! 當我嘗試使用窗口和文檔中,他們實際上指向子(IFRAME)文件和窗口,我的定製,code.js ???

所以我想了解它的作品。

感謝

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

尼斯1,現在我拿到劇本中的父文檔對象。 但問題仍然存在 - 爲什麼?:) – Pavdro

+0

因爲腳本的所有者文檔是錯誤的。這種方法確保所有者是正確的。我猜你正在使用用於該用途的情況下,沒有計劃的圖書館。這就是爲什麼[香草JS](http://vanilla-js.com/)是如此的真棒:p –

+0

大聲笑,一秒鐘我認爲這是一個真正的框架:DDD 好的,非常感謝! – Pavdro