跳轉到內容

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>
華夏公益教科書