我经常看到一些站点使用包含外部网址的iframe,并在顶部框架中提供用户JavaScript功能,例如用户分析软件、Digg栏等等...有没有类似的实验技巧呢?=)很想知道。
不,不是从iframe外部。一个<iframe>
就像一个独立的世界。如果域名等匹配,那么Javascript可以在内部和外部通信,并且(如果想要的话)可以向子框架中注入CSS。
如果<iframe>
包含来自不同域的内容,那么你几乎无能为力。父页面控制框架的大小和可见性,并且可以通过定位等方式将自己的内容放置在框架上方,但不能直接影响实际框架内容的呈现方式。
$("iframe").load(function() {
var frameContents;
frameContents = $("#IframeId").contents();
frameContents.find("#elementId").css("color","#fff");
});
可以通过将CSS链接注入iframe的头部来实现:
// this function will inject the link to CSS into iframe header
function loadCSSToiFrame(iframeId, filename){
var file = document.createElement("link");
file.setAttribute("rel", "stylesheet");
file.setAttribute("type", "text/css");
file.setAttribute("href", filename);
document.getElementById(iframeId).contentWindow.document.head.appendChild(file);
}
// just call a function to load your CSS
// this path should be relative your HTML location
loadCSS("iframe_id", "stylesheet.css");