2012-10-01 84 views
4

我正在嘗試在可以在客戶端網站上使用的iframe中創建登錄小部件。此iframe將使用jQuery,但我首先不會能夠檢查父文檔是否加載了jQuery,如果沒有,加載它。檢查父級iFrame是否已經加載了jQuery

我已經嘗試了幾種不同的技術,但似乎沒有工作,或決定加載jQuery庫兩次。

任何幫助將不勝感激。

此代碼塊位於iframe內加載的頁面內,該頁面拒絕合作。

<script> 

var jQOutput = false; 

function initjQuery() { 

if (typeof(jQuery) == 'undefined'){  
    if (!jQOutput){   
     jQOutput = true; 

     var jScript = document.createElement('script'); 
     jScript.setAttribute("type", "text/javascript"); 
     jScript.setAttribute("src", "js/libs/jquery/jquery-min.js"); 
    } 
    setTimeout("initjQuery()", 50); 
} else { 
    $(function() { 
     $("#email").css({"background":"red"}); 
     //visual aid to see if jQuery is loaded. 
    }); 
} 
} 
</script> 

我只是想檢查,看看父母的iframe加載jQuery的,如果沒有,加載它自己,因爲我將使用它來執行完成登錄proceedure需要幾個任務。

+1

嗨,歡迎來到SO,我不認爲你想存檔是可行的,因爲相同的原產地政策(通過JavaScript跨域訪問) - 看它在谷歌上運行... https://www.google.com/搜索?q =相同+來源+政策 – andlrc

+0

@AndreasAL,你的意思是實現。 – nalply

回答

1

Entented評論:

我不認爲你要存檔的是更多鈔票,因爲同源策略(通過JavaScript跨域訪問)的 - 看它在谷歌OP ... http://google.com/search?q=same+origin+policy


如果您在另一方面不違反同源策略可以存檔你想要使用像這樣的內容:

var parent = window.parent; // This refers to parent's window object 

if (parent && parent.jQuery) { // Check to see if parent and parent.jQuery is truly 
    window.jQuery = parent.jQuery; 
    window.$ = parent.jQuery; 
} 
else { 
    // load jQuery here 
} 
+0

謝謝你的回覆,我已經嘗試了你的建議,但它仍然不起作用。認爲這是不可能的。 –

+0

@AndrewBurns正如我所能理解的,您試圖從另一個域的iFrame訪問父項。這是**不可**。 – andlrc

1

您小部件的JavaScript代碼必須分爲兩部分。其中一個將被加載到客戶的網站上。它有權訪問網站的DOM:如果需要加載jQuery,創建一個iframe等(特別要小心全局變量!儘量不要使用它們,因爲它們可能會與網站的代碼發生衝突。 )請注意,此部分無法訪問iframe的DOM。這就是爲什麼你需要第二部分,它將被加載到iframe中。您可以使用跨部門技術爲零件互相交換信息。我建議你看看easyXDM library

相關問題