網頁post自動產生iframe

大部份在寫網頁要上傳檔案時都需要使用到iframe做一個中繼,可是如果上傳POST時有錯訊息時,前一個iframe資料就會變成記錄history,而此時如果使用者重新整理時,就會遇到暫存資料的問題,iframe裡的內容會再被執行一次。

以下有一個JavaScript方法,可以在檢查完所有form條件時才自動建立iframe內容createiFrame做post動作,而重新整理時(或第一次進入此畫面時)又不會真實存在,來解決暫存的問題。

當呼叫createIFrame時,會在body這一個tab建立一個iframe元素,並把需求屬性設定好,像是frameborder=0、width=0、height=0等。

function createIFrame() {
        if (!document.getElementById("_hiddenframe"))
        {
            var frame = document.createElement("iframe");
            frame.setAttribute("name", "_hiddenframe1");
            frame.setAttribute("src", "about:blank");
            frame.setAttribute("frameborder", "0");
            frame.setAttribute("height", "0");
            frame.setAttribute("width", "0");
            frame.setAttribute("id", "_hiddenframe");
            frame.name = "_hiddenframe";
            document.body.appendChild(frame);
            window.frames._hiddenframe.name = "_hiddenframe";
            document.getElementsByTagName("body")[0].appendChild(frame);

        }

    }

[jsp小技巧]利用Throw Exception來完成Ajax

一般在寫Ajax時,最直覺的使用方法就是利用Ajax Object來要求Server給與回應, 再依回應的內容解西倒底是完成動作?還是有錯誤產生,如必填欄位未填。

這裡介紹一個小技巧,在編譯式的網頁伺服器語言可能比較合適使用。

大概的原理是利用程式在執行有錯誤時Throw Exception來當做錯誤訊息, 回傳給client,而client只要接收到503的錯誤,則就可以知道動作並未完成, 反之則是完成。

範例使用prototype來使用Ajax,傳送及回應,有需要可以參考:

Ajax 使用prototype.js 1

以下是載行結果,當有填值時,則回應填寫的值,

沒填值的時候就回傳錯誤訊息。(Exception)

1
2
Read More

[javascript效果]marguee move top

這是一個簡單的例子

大概的構想是,先把原始要上移的範圍A copy(clone)一份放置於無接縫的下方B

當B移到動可視範圍的0px時,瞬間把A設成在0px的地方

那向上移的方式是利用外框的style屬性overflow:hidden,然後利用scrollTop一直增加,那內容物就會被向上跑了

由右向左看物件的變化大概下如(紅色代表B,藍色代表A)

5
0
1
4
5

在第四個跟第五個時瞬間把A設成在0px

再來做的小實驗

利用scrollTop來移動物件位置

Read More

[javascript]滑鼠移動評分

這個javascript就是一般看到mouse移動到第顆星就會顯示幾分,減少單板的radio choice

構想

在每一個img裡,偷偷給定一個attribute 當做index 的值(判斷mouseover是在那一個img裡)

設定img的mouseover動作,當設定的attribute跟for loop的index小於時,可定另一種圖

否則就回覆成原始的圖

source大概如下

Read More

[javascript]Menu Bar

這是個很簡單的JavaScript的Menu Bar只可以由左向右顯示

構想

利用二個Div,第一個Div檔顯示Menu名字用的,第二個把寬高跟都設到最小

(看需求),以上二者均設定float:left

再來把滑鼠移入時要顯示的資料利用Div 放在上面的第二個Div 裡,設定其style

position:relative;
display:none;
z-index:100;
top:0px;
left:0px;

利用第二個Div定位來顯示次Menu內容

Read More