2010-10-25 48 views
0

我喜歡將動態CSS文件添加到窗口。 我建立這個代碼是:Internet Explorer中父窗口上的動態CSS

 

function LoadJSCSSFile(filePath,fileType,parentBOO){ 
    //- 
    var fileRef;   // Get the file reference 
    //- 
    //Set external JavaScript/CSS file 
    switch(fileType){ 
     case "js": 
      fileRef = document.createElement('script'); 
      fileRef.setAttribute("type","text/javascript"); 
      fileRef.setAttribute("src", filePath); 
      break; 
     case "css": 
      fileRef = document.createElement("link"); 
      fileRef.setAttribute("rel", "stylesheet"); 
      fileRef.setAttribute("type", "text/css"); 
      fileRef.setAttribute("href", filePath); 
      break; 
     default: 
      return; 
      break; 
    } 

    //Load the file 
    if(parentBOO){ 
     parent.document.getElementsByTagName("head")[0].appendChild(fileRef); 
    }else{ 
     document.getElementsByTagName("head")[0].appendChild(fileRef); 
    } 
} 

它在Firefox和Chrome,但在Internet Explorer 6,7工作正常(我不會在8,9檢查還)我得到下一JavaScript錯誤: 「無效參數」 在此行中: parent.document.getElementsByTagName("head")[0].appendChild(fileRef);

我想知道,這是因爲跨域安全,所以我在父窗口中添加這一行 : "document.domain = '127.0.0.1';"

但它的不是幫助。

回答

0

我找到了解決方案。 問題是我創建的元素不在同一個窗口對象上。 要修復它我添加一行:parent.document.CreateElement代替:使用document.createElement

固定的代碼是:

 

function LoadJSCSSFile(filePath,fileType,parentBOO){ 
    //- 
    var fileRef;   // Get the file reference 
    //- 
    //Set external JavaScript/CSS file 
    switch(fileType){ 
     case "js": 
      if(parentBOO){ 
       fileRef = parent.document.createElement('script'); 
      }else{ 
       fileRef = document.createElement('script'); 
      } 
      fileRef.setAttribute("type","text/javascript"); 
      fileRef.setAttribute("src", filePath); 
      break; 
     case "css": 
      if(parentBOO){ 
       fileRef = parent.document.createElement("link"); 
      }else{ 
       fileRef = document.createElement("link"); 
      } 
      fileRef.setAttribute("rel", "stylesheet"); 
      fileRef.setAttribute("type", "text/css"); 
      fileRef.setAttribute("href", filePath); 
      break; 
     default: 
      return; 
      break; 
    } 

    //Load the file 
    if(parentBOO){ 
     parent.document.getElementsByTagName("head")[0].appendChild(fileRef); 
    }else{ 
     document.getElementsByTagName("head")[0].appendChild(fileRef); 
    } 
}