簡體   English   中英

捕獲所有鏈接,包括表單提交

[英]Capture all links including form submission

我想知道如何使用jQuery捕獲頁面上的所有鏈接。 這個想法類似於Facebook。 在Facebook中,如果單擊鏈接,它將捕獲該鏈接並使用ajax加載相同的鏈接。 只有在新標簽頁等中打開鏈接時,它才會使用常規調用加載頁面。

關於如何實現這種功能的任何線索? 確定捕獲鏈接應該不是問題,但是捕獲表單提交然后通過ajax提交整個數據然后顯示結果呢?

有沒有已經存在的插件?

感謝您的時間。

亞歷克

您絕對可以做到這一點。

我有一種以這種方式處理的表格。 它使用上面提到的jquery表單插件kgiannakakis。 下面的示例javascript顯示了它如何工作。

$("form").ajaxForm({
    beforeSubmit: function(){
        //optional: startup a throbber to indicate form is being processed 
        var _valid = true;
        var _msg = '';
        //optional: validation code goes here. Example below checks all input
        //elements with rel attribute set to required to make sure they are not empty
        $(":input [rel='required']").each(function(i){
            if (this.value == '') { 
                _valid = false;
                _msg += this.name + " may not be empty.\n";
                $(this).addClass("error");       
            }
        });
        alert(_msg);
        return _valid; 
    },
    success: function(response){
        //success here means that the HTTP response code indicated success
        //process response: example assumes JSON response
        $("body").prepend('<div id="message" class="' + response.status + '"></div>');
        $("#message").text(response.message).fadeIn("slow", function(){
                $(this).fadeOut("slow").remove();
        });
    }
});

表單插件可以將常規表單轉換為Ajax表單:

$("#myForm").ajaxForm(
   {beforeSubmit: validate, success: showResponse} );

但是,對於任意形式,將很難執行您想要的操作。 如果表單使用驗證或由Ajax提交,該怎么辦? 鏈接同樣適用。 如果有一些JavaScript導航腳本(window.location =網址)怎么辦? 如果您無法完全控制該頁面,則很難進行所需的操作。

通常,像facebook這樣的頁面會分別對每個事件和每種形式進行編碼,因為通常為每個單個操作/一組操作設置服務器端文件。 我懷疑是否只有一種使用插件轉換頁面的干凈方法。 如果是這樣,我會發現很多開銷。

您可以手工完成,但同樣是濫用Ajax。 這不是閃存,並且在所有服務器通信中使用ajax時會遇到很多問題。

  • 缺乏歷史跟蹤。
  • 注意並發事件及其結果。
  • 向用戶傳達頁面正在更改。
  • javascript用戶已關閉。
  • 以及更多...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM