淘先锋技术网

首页 1 2 3 4 5 6 7

JavaScript中,iframe是非常重要的一个标签,他可以实现在当前页面中嵌入其他网页,实现跨域访问,添加广告,以及实现独立的url传参等功能。

举个例子来说,在一个网页中,你可以通过iframe引入其他页面,如下:

<iframe src="http://example.com"></iframe>

这会在当前页面中嵌入example.com这个网页,但是需要注意的一点是:由于同源策略的限制,如果引用的页面来源不同(比如说要引用的页面域名和当前页面域名不一样),那么就需要考虑csrf等问题。

而使用iframe的最常见的场景就是在一个页面中引入广告。比如我们举例来说一个网站,他需要在页面上引入Google Adsense的广告:

<iframe src="https://googleads.g.doubleclick.net/pagead/html/r20210113/r20190131/zrt_lookup.html#" width="970" height="90" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe>

由于广告组件实际上是存在于其他网站上的,即使我们想引入他,还需要真正获取到他的地址,然后使用iframe把他嵌入到我们的网页上。

而有时候我们还需要在一个iframe中加入一些快速访问url的链接,这时候需要使用javascript的postMessage方法,把我们需要的链接通过一个数组,传入到一个空白的url中:

var links = ['https://google.com', 'https://baidu.com'];
var iframe = document.createElement('iframe');
iframe.src = 'about:blank';
document.body.appendChild(iframe);
window.addEventListener('message', function(event) {
console.log(event.data);
});
iframe.contentWindow.postMessage(links, '*');

这会在新建的iframe中,加载一个空白的页面,监听iframe的消息事件,并传入一个links数组。接下来,在iframe中需要添加一个url列表,用来访问其他的网址。这时候需要在iframe中检测消息事件,并更新iframe中的html:

window.addEventListener('message', function(event) {
links = event.data;
var html = '';
for (var i = 0, l = links.length; i< l; i++) {
var link = links[i];
html += '<a href="' + link + '">' + link + '</a>';
}
document.body.innerHTML = html;
});

这段代码使用了循环来构建一个html字符串,之后设置到document.body上,实现了快速访问url的链接效果。

除此之外,iframe还有很多其它的使用,比如说发送ajax请求,或者使用 iframe 实现 preview 等。

总之,iframe在JavaScript中是非常重要的一个标签,在很多的场景下,都可以发挥出非常重要的作用,我们需要多多关注和学习。