Js怎么弹小窗口(跨浏览器)

JavaScript09

Js怎么弹小窗口(跨浏览器),第1张

百度用的是弹出层,不是一个真正的窗口,使用window.open虽然也能打开一个弹出页,但是某些浏览器开启了阻止弹出广告功能时,会阻拦这个窗口.推荐jQuery插件thickbox,很不错的一个弹出层插件

你的这种需求叫做多标签/页面同步。

比如:我站点所有的页面都有广告。现在用户打开了属于我的网站下的三个页面A、B和C,都在右下角有个相同的广告区域。用户当前的页面是C,用户关闭了这个广告。此时,为了让用户有更好的体验,我希望A和B页面的广告也能自动关闭。不想让用户回到A页面的时候,看到的依然有打开的广告。这种情况我们该怎么办呢?

其实这个问题非常简单。

我们不可能在C页面中直接通过调用某个函数,来控制A和B页面的行为。

但我们可以通过间接的方法来“告知”A和B页面,来达到类似的效果。

步骤如下:

当C页面用户点击关闭广告时,向cookie中写入一个特定的cookie值,比如user_close_ad。

A和B页面,每隔100毫秒,检查一次cookie中有没有名字叫做”user_close_ad“的cookie。

如果检查到这个cookie,就执行相应的动作。

哪个电影站实现了这个效果?

点击a.html中的第一个链接,然后弹出自定义大小的窗口,而且在这窗口中iframe里显示b.html,这一步是相当简单可以实现的;

难点是在b.html已经打开,然后再回去点击a.html里的另一个链接,然后你想在已经打开的b.html中的iframe里打开新点击的链接页面,这一步是不可能实现的。

跨窗口的js操作是被浏览器严格禁止的,这一点只要你对浏览器安全了解一下,就明白其意义所在,这还不算,浏览器对本窗口中的ifream跨域操作都被禁止,甚至opera同域都会被禁止。

所以,你如果你非要实现你所讲的功能,最理想的方案是在本窗口中使用JS,html,css来模拟一个窗口,就像我们现在使用的百度知道,有时候会出现提示吧,那个提示不是窗口弹出,而是一个模拟出来的窗口。

如果这样的方案可行的话,你不妨试试,因为这样,就不存在跨窗口、跨域等等这些问题了。

当然,你的出发点本身就是想要跨域(就是指,你用你自己的网站,在iframe里打开另一个别的域名的网站内容这样的操作叫跨域),那不好意思,实现不了。