2011-02-09 158 views
2

我想通過按下位於模態窗口頁面上的按鈕關閉模式窗口。它不工作。我的模態窗口頁面包含一個視頻播放器。按下按鈕關閉導葉模式窗口

我的代碼是:

public class PlayVideoWindow extends WebPage { 
    public PlayVideoWindow(final Page modalWindowPage, final ModalWindow window, final String itemId) { 
     final String xmlFilePath = ((WebApplication) getApplication()).getServletContext().getRealPath("/resources/video/xml/video.xml"); 
     String filename = null; 

     try { 
      filename = WebVideo.getVideo(itemId, xmlFilePath); 
     } catch (SAXException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     }   

     WebMarkupContainer videoContainer = new WebMarkupContainer("videoDiv"); 
     add(videoContainer); 

     add(HeaderContributor.forJavaScript("resources/video/js/swfobject.js")); 

     final String script = "var swfVersionStr = '10.0.0';" 
      + "var xiSwfUrlStr = 'playerProductInstall.swf';" 
      + "var flashvars = {};" 
      + "flashvars.filename = '"+ filename +"'" +";" 
      + "var params = {};" 
      + "params.wmode = 'transparent';" 
      + "params.quality = 'high';" 
      + "params.allowscriptaccess = 'always';" 
      + "params.allowfullscreen = 'true';" 
      + "params.allownetworking = 'all';" 
      + "var attributes = {};" 
      + "attributes.id = 'Player';" 
      + "attributes.name = 'Player';" 
      + "attributes.align = 'left';" 
      + "swfobject.embedSWF('/jtrac/resources/video/swf/Player.swf', 'movieDiv', '320', '320', swfVersionStr, xiSwfUrlStr, flashvars, params, attributes);" 
      + "swfobject.createCSS('#flashContent', 'display:block;text-align:left;');"; 

    add(new AbstractBehavior() { 
     public void renderHead(IHeaderResponse response) { 
      super.renderHead(response); 
      response.renderOnLoadJavascript(script); 
     } 
    }); 

    //videoContainer.add(new AjaxButton("close") { 
     // protected void onSubmit(final AjaxRequestTarget target, final Form form) { 
     // PlayVideoWindow.this.close(target); 
     //} 
    //}); 

    //Button closeButton; 
    //videoContainer.add(closeButton = new Button("close")); 
    //closeButton.add(new AttributeAppender("onclick", new Model("window.close();"), ";")); 
    } 
} 

而這裏的HTML:

<div wicket:id="videoDiv"> 
<div id="movieDiv"></div> 
<input type="button" wicket:id="close" /> 
</div> 

的代碼註釋的線是我的測試。任何信息對我都很有幫助。謝謝。

編輯:
我解決我的問題與此代碼:

add(new AjaxLink("close") { 
     public void onClick(AjaxRequestTarget target) { 
      window.close(target); 
     } 
    }); 

回答

2

所有你需要做的是插入到您的按鈕的代碼close方法的調用。

要關閉窗口,有多個選項。靜態方法close(AjaxRequestTarget)可用於從窗口內的ajax鏈接處理程序關閉窗口。

來源:documentation of ModalWindow在1.4.7發佈。

我看到你用鏈接解決了你的問題,但是你的帖子提到了一個按鈕,所以我不知道鏈接解決方案是否只是一個解決方法,直到你有更好的東西。另外,因爲close是一個靜態方法,所以應該從類中調用它,而不是實例。

+0

謝謝@Torgamus。我已經解決了它與按鈕和鏈接。 – 2011-02-11 04:30:57

3

下面是一個示例腳本:

<script type="text/javascript"> 

    if (top != self) { 
     var wicket = top.Wicket; 
     if (wicket && wicket.Window) { 
      var modal = wicket.Window.get(); 
      if (modal) { 
       modal.close(); 
      } 
     } 
     top.location.href = location.href; 
    } 
</script> 
3

你正在ModalWindow窗口在你的構造。

嘗試

window.close(target); 
相關問題