Change Iframe Style When the Src is Set Dynamically

╄→尐↘猪︶ㄣ 提交于 2019-12-20 07:05:29

问题


In my site I have this iframe

<iframe id='iFrameName1' width='1000' height='500'></iframe>

The src tag is dynamically defined with javascript. In addition, I want to dynamically change the style of the iframe (it is in the same domain).

<script> function urlChange() {      
var iframe1 = document.getElementById('iFrameName1'); 
iframe1.src = 'mypage.html';
var cssLink = document.createElement("link"); 
cssLink.href = "iframe.css";  
cssLink.rel = "stylesheet";  
cssLink.type = "text/css"; 
iframe1.contentDocument.getElementsByTagName('head')[0].appendChild(cssLink); 
}  
</script>

The problem is: as the src is defined dynamically, I think the "iframe1.contentDocument" is not found.

How to solve this problem? I want to define the src and to change the iframe style dynamically.

Thanks in advance.


回答1:


EDIT:

You can handle onload event of your iframe like this:

iframe1.onload = function(){ 
 ....
}

Your code could go like this:

function urlChange() {      
    var iframe1 = document.getElementById('iFrameName1'); 
    iframe1.src = 'mypage.html';

    iframe1.onload = function(){
       var cssLink = document.createElement("link") 
       cssLink.href = "iframe.css"; 
       cssLink.rel = "stylesheet"; 
       cssLink.type = "text/css"; 
       var y = (iframe1.contentWindow || iframe1.contentDocument);
       if (y.document)y = y.document;
       y.getElementsByTagName('head')[0].appendChild(cssLink);  
    }
}

DEMO:
http://swift-exploder-php-36-103575.apne1.nitrousbox.com/test/iframe/1.html

The document of contentWindow is here: http://www.w3schools.com/jsref/prop_frame_contentwindow.asp

Hope this helps.



来源:https://stackoverflow.com/questions/23873143/change-iframe-style-when-the-src-is-set-dynamically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!