跳转到内容

WebObjects/Web 应用程序/开发/示例/在新窗口中打开链接

来自 Wikibooks,为开放世界提供开放书籍

使用 JavaScript 在新窗口中打开链接。 实际上有一种非常简单的方法可以做到这一点。 只需使用 WOHyperlink,并使用 onclick 绑定。

 Hyperlink3: WOHyperlink {
       action = myCustomAction;
       onclick = "return openInNewWindow(this)";
       target = "_new";
 }
 <script language="javascript">
 function openInNewWindow(senderLink) {
       url = senderLink.href;
       newWindow = window.open(url,"NewWindow","width=650,height=600,resizable=yes,"+
               "scrollbars=yes,location=no,toolbar=no");
       newWindow.focus();
       return false;
 }
 </script>

有趣的是,超链接将自身发送到 openInNewWindow()? 函数,该函数然后从链接的 href 属性中获取 URL,并在新窗口中打开它。 您可以使用普通的旧操作方法并将其绑定到此超链接。 此外,它将在不支持 javascript 的浏览器中工作,因为该函数不会返回 false,并且链接将像目标为“_new”的普通超链接一样工作。 当 javascript 返回 false 时,将不会遵循链接。

要执行更复杂的操作,假设您将图像尺寸存储在数据库中,并且希望新打开的窗口恰好具有正确的尺寸。 您需要以编程方式为 WOHyperlink 创建“onclick”绑定字符串,该字符串将尺寸传递给 openInNewWindow()? javascript 函数。

 Hyperlink3: WOHyperlink {
       action = myCustomAction;
       onclick = myOnclickString;
       target = "_new";
 }

并在您的组件类中添加以下方法

 public String myOnclickString() {
       EOEnterpriseObject imageBeingOpened; // assume this exists
       Integer width = imageBeingOpened.width();
       Integer height = imageBeingOpened.height();
       return "return openInNewWindow(this, " + width + ", " + height + ");";
 }

最后,更改您的 javascript 方法以接受宽度和高度参数

 <script language="javascript">
 function openInNewWindow(senderLink, width, height) {
       url = senderLink.href;
       newWindow = window.open(url,"NewWindow","width="+width+",height="+height+",resizable=yes,"+
               "scrollbars=yes,location=no,toolbar=no");
       newWindow.focus();
       return false;
 }
 </script>
华夏公益教科书