2012-01-17 43 views
0

我必須將Java小程序集成到簡單的asp.net 2.0控件中。在長期治療回覆之前隱藏小程序

此applet是已購買的產品,無法修改。它包含一個旨在點擊以繼續的按鈕。按鈕點擊鏈接到JavaScript功能。

所以我們可以看到這個小程序是一個黑盒子,吃完數據後調用JS函數。

當JS函數被調用去下一頁時,我必須做一個回發。很簡單,我只需要寫它。但我也想隱藏小程序或包含它的div,因爲回發觸發了一些長時間的處理。重點在於,在等待時,用戶可以點擊小程序按鈕並再次觸發回發。

在我的JavaScript調用的函數,我試過很多解決方案:

  • 製作2回發。當然,這是不行的,因爲回傳是頁面
  • 隱藏/顯示DIV或使用JavaScript
  • 小程序
  • 隱藏/顯示DIV或使用jQuery
  • 小程序
  • 隱藏/顯示的重載div或小程序調用隱藏按鈕的Click事件,在後面的代碼中設置Visible = false

但它總是失敗:似乎web瀏覽器(IE 8.0或Chrome)等待回髮結束/ JS函數來更新頁面,並且不用擔心之前的一些UI更新。

所以我在這裏:

  • 我需要回發去到下一個頁面(我不控制在使用我的控制整個環境)
  • 我有隱藏的小程序,否則它的用戶可以重新點擊
  • 我不能讓一個兩步的過程,就像在JS功能隱藏的小程序,並顯示一個鏈接到下一個頁面,包括一個新的點擊

我簡單的控制L:

<%@ Control Language="C#" AutoEventWireup="false" Codebehind="MyControl.ascx.cs" 
    Inherits="MyControl" %> 
<div id="m_DivPostDisplay" runat="server"> 
    <asp:Label ID="lblState" runat="server" Text="Displaying something like please wait..." /> 
</div> 
<div id="m_DivAppletContainer" runat="server"> 
    <applet name="myApplet" archive="./myJar.jar" 
     code="Main.class" height="700" width="530" mayscript> 
    </applet> 
</div> 

相關的JavaScript(當頁面加載注入):

<script language='javascript'> 
    function sendData(data) { 
     // This is where I try to hide the applet or the div 
     //..... 

     // Go to the next page 
     WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"nextButtonId\", \"\", true, \"\", \"\", false, true)); 
    } 
</script> 

你有什麼可以做,以解決我的問題的任何想法? 謝謝:)

+0

我嘗試了另一種方式:淡出網頁並顯示一個不錯的「加載請稍候」消息。但是applet不會淡出,並且applet缺少像flash的「wmode」這樣的參數。 所以我有一個很好的淡出頁面,在中間有一個閃亮的小程序... – Valryon 2012-01-20 14:37:52

回答

0

最後,我們問小程序編輯器添加了新的功能,因此當我們需要,我們現在可以禁用它的按鈕。

所以當我們點擊按鈕時,我們保持它禁用,啓動回發,並在回發返回時更改頁面。

0

醜陋,但你可以嘗試:

function sendData(data) { 
    // hide applet 
    setTimeout(function() {WebForm_DoPostBackWithOptions(...);}, 500); 
} 
+0

是啊,醜陋的,但我會試一試! – Valryon 2012-01-17 15:02:58

+0

剛剛嘗試過,沒有工作,對不起:/ – Valryon 2012-01-17 15:09:35

+0

最糟糕的,但我會嘗試使用iframe,所以... – 2012-01-17 15:18:27