2011-02-04 9 views
1

にDOMをフレームの子供からのjavascriptとCSSを送信することは可能です私はDesire2Learnを(学習管理システム)LMSにコンテンツを挿入し、jqueryのライトボックスのクローンにcolorbox.が、それは親

LMSの用途を実装したいのですさまざまなフレームであり、指定された 'コンテンツ'フレームにのみHTMLコンテンツを配置することができます。私は3つのインクルードファイルをDOMの最下位レベルからトップレベルに送信するためにjavascriptを使用したいと考えています。私は以前に成功しません以下を試みた

<script type="text/javascript"> 
/* locate the parent frame */ 
var par = parent; 
while (par !== par.parent) { 
    par = par.parent; 
} 
/* inject the css and scripts in the top frame */ 
var scr = par.document.createElement('script'); 
scr.setAttribute('type','text/javascript'); 
scr.setAttribute('src','jquery-1.4.3.min.js'); 
par.document.head.appendChild(scr); 

var lnk = par.document.createElement('link'); 
lnk.setAttribute('type','text/css'); 
lnk.setAttribute('rel','stylesheet'); 
lnk.setAttribute('href','colorbox.css'); 
par.document.head.appendChild(lnk); 

var scr = par.document.createElement('script'); 
scr.setAttribute('type','text/javascript'); 
scr.setAttribute('src','jquery.colorbox-min.js'); 
par.document.head.appendChild(scr); 
</script> 

は、私は方法は、私が求めています何をしないで、すべて右方向に向かうか、単にそこにあるのですか?

+1

ローカルでテストすると動作しません。セキュリティ上の理由から、(すべてのフレームの)ドメイン名が一致する必要があります。それ以外は、それは良いようです。 – JCOC611

+0

あなたは同じドメインにいますか? –

答えて

1

カラーボックスJSがJQueryの前にロードされているため、JQueryの呼び出しが失敗するという点を除いて、このコードは私のために機能します。最後のスクリプト要素をsetTimeoutの中に入れて、そのエラーを取り除いた。親フレームに完全にロードされたことを確認するために、コンソールに入れました。

$(document).ready(function() { alert('hi'); }); 

警告がポップアップしました。

内側フレームから外側フレームにライトボックスを開くアンカーを取得しようとしている場合、外側に向かって作業するのではなく、トップレベルフレームをターゲットにするようにカラーボックスコードを変更する方が簡単かもしれません。