弹出窗口
显示弹出页面最典型的方法,就是使用JavaScript。同样,如上所述,搜索引擎很可能不能搜索到由JavaScript指向的网页。如果能让弹出网页被检索到呢?
解决方法非常简单。下面就是典型的弹出窗口链接:
<a href="#" onClick="window.open('page.html','mywindow','width=800,height=600'); return false;">Click here</a>
可以使用以下代码来改变链接,使得该弹出窗口可被搜索到:
<a href="page.html" onClick="window.open(this.href,'mywindow','width=800,height=600');return false;" target="_blank">click here</a>
这个改变的链接效果,仍然是在支持JavaScript的浏览器中出现弹出窗口。其中,onclick事件使用windows.open的方法来打开this.href,接着返回false以阻止请求该链接。另一方面,该链接仍然存在,因此,搜索引擎可以在不执行JavaScript代码的情况下导航到该链接。
另外,可以通过使用常规链接,带有 target="+blank"属性打开一个新窗口,来模拟一个弹出链接,并且在页面显示后自动调整窗口的大小。从技术上来说,这并不是一个真正的弹出窗口,而且只是一个带有自动调整大小功能的新窗口,但和弹出窗口的作用相似。这样一个“弹出”链接用下面代码生成:
<a href="page.html" target="_blank">Click here</a>
在被链接到页面上,必须包含调整窗口大小的JavaScript。要做的这点,可以将下面的代码放置到该文档的body标识符的onload属性中,并配置好相应的参数:
<body onload="wubdiw,resizeTo(800,600);">
此外,还可以用以下代码来处理该窗口的resize事件,以此来保持窗口的大小为常数。
<body onresize='setTimeout("window.resizeTo(800,600);",100);'>
使用setTimeout,以确保代码将可以在所有的浏览器中运行。
除提高了搜索引擎对弹出链接的可见程度之外,也实现了可用性的增强。这是因为如果用户的JavaScript功能不可用,那么这两种弹出链接仍然会通过target="_blank"属性在新的浏览窗口中打开内容。
这些技术将会在接下来的例子中加以阐述,还将研究可被检索的弹出窗口链接的可用性问题。
实现弹出窗口导航
当用户通过搜索引擎或从外部网站到达该弹出页面后,为了使用户能返回到其母页面,应该设置某种导航功能。因为通常创建的弹出窗口都不包含上下文和导航单元,这就产生了问题。
应该至少提供返回首页的链接,而且在理想状况下应该返回到一些更相关的母网页。否则,用户可能会完全地迷失而将继续使用最近的返回按钮。
通过搜索引擎来检索弹出窗口并不总是可取的。在该导航的重要性和弹出窗口中经常不包含本质性信息的事实之间,不这样做将更明智些。除非该弹出页面有本质性信息,否则建议不要让网络蜘蛛搜索它。
通过读取$_SERVER['HTTP_REFERER']报头变量,可以得到导航到该弹出页面的网页。这个信息允许只有当用户从外部网站访问时,才显示该导航单元。
这个方法不是百分百可靠,因为很多防火墙应用程序封锁了REFERER信息。另外,如果相关页面是通过https协议得到的,那么REFERER信息也将不可用。在这个例子中,如果没有REFERER数据,出于安全考虑也显示该导航单元。