2010-02-16 30 views
12

Có sự kiện javascript nào được kích hoạt khi đăng lại không?Sự kiện Javascript trên trang đăng lại

Nếu không, làm cách nào tôi có thể chạy mã phía máy khách ngay sau hoặc trước một lần đăng lại trang?

+0

+1 Chào mừng bạn đến với Stack Overflow, Bruno. – Sampson

Trả lời

0

Sử dụng AJAX, với trình xử lý sự kiện cho onComplete.

2

Sự kiện onsubmit trên thẻ form

Khi sử dụng jQuery nó như thế này

$("#yourformtagid").submit(function() { 
... 
} 
+0

JQuery? Không chắc chắn OP muốn sử dụng một khung hoàn chỉnh chỉ để làm nhiệm vụ của mình;) –

+2

Nhưng mỗi trang web nên có jQuery chỉ trong trường hợp :-) – TFD

+1

dude, đó là không mát mẻ. –

3

Bạn có thể thêm javascript trong tải trang của bạn như thế này ...

Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", 
    "alert('hello world');", true); 

HOẶC

Page.ClientScript.RegisterStartupScript(this.GetType(), "alertScript", 
    "function Hello() { alert('hello world'); }", true); 
-1

Không có sự kiện javascript nào được kích hoạt khi trang tải sau khi đăng lại nhưng bạn có thể thêm javascript vào mẫu html của mình (tệp .aspx) và chỉ chạy nó nếu trang được đăng, như sau:

<script type='text/javascript'> 
    var isPostBack = '<%= this.IsPostBack%>' == 'True'; 
    if (isPostBack) { 
     alert('It's a PostBack!'); 
    } 
</script> 

Nếu bạn muốn tùy chỉnh các javascript để chỉ chạy trong điều kiện đặc biệt (không chỉ bất kỳ postback), bạn có thể tạo một biến trang cấp (được bảo vệ hay công cộng) trong lớp trang của bạn và làm một cái gì đó tương tự:

var userClickedSubmit = '<%= this.UserClickedSubmit%>' == 'True'; 
if (userClickedSubmit) { 
    // Do something in javascript 
} 

(Không có gì chống lại ClientScript.RegisterStartupScript, điều đó là tốt - đôi khi bạn muốn giữ javascript của mình trong mẫu trang, vì vậy số lần bạn muốn giữ trong lớp trang của mình.)

1

Đối tượng Page.ClientScript có RegisterOnSubmitStatement Điều này kích hoạt sau khi bất kỳ đầu vào nào gửi biểu mẫu. Điều này có thể hoặc không thể là những gì bạn đang tìm kiếm, nhưng tôi đã sử dụng nó để thông báo cho người dùng về các thay đổi chưa được lưu trong các biểu mẫu có thể chỉnh sửa. Ưu điểm của việc sử dụng chức năng này trên RegisterStartupScript là với RegisterOnSubmitStatement, nếu người dùng điều hướng đi và quay lại bằng trình duyệt, bất kỳ tập lệnh nào bạn đã tiêm bằng RegisterStartupScript có thể có khả năng kích hoạt lại, trong khi RegisterOnSubmitStatement sẽ chỉ chạy nếu người dùng đã gửi hình thức.

+0

Cảm ơn, tôi sẽ thử phương pháp này! – Bruno

2

tôi không biết nếu bạn vẫn cần, nhưng hãy xem này:

Run javascript function after Postback

tôi giải quyết vấn đề của tôi sử dụng này:

<script type="text/javascript"> 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_endRequest(function (s, e) { 
    alert('Postback!'); 
}); 

có rất nhiều tùy chọn, chẳng hạn như

$('#id').live('change', function(){}); 

$(document).ready(function() {}); 
ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true); 

và tiếp tục. phụ thuộc vào những gì bạn cần.

Trân trọng =)

4

Tôi tin rằng những gì bạn đang tìm kiếm là Sys.WebForms.PageRequestManager beginRequest Event

Trích:

Sự kiện BeginRequest được nâng lên trước khi chế biến một bắt đầu postback không đồng bộ và postback được gửi đến máy chủ. Bạn có thể sử dụng sự kiện này để gọi tập lệnh tùy chỉnh để đặt tiêu đề yêu cầu hoặc để bắt đầu hoạt ảnh thông báo cho người dùng rằng postback là đang được xử lý.

Mã mẫu: (Từ liên kết)

<script type="text/javascript" language="javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    function BeginRequestHandler(sender, args) 
    { 
     var elem = args.get_postBackElement(); 
     ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...'); 
    } 
    function EndRequestHandler(sender, args) 
    { 
     ActivateAlertDiv('hidden', 'AlertDiv', ''); 
    } 
    function ActivateAlertDiv(visstring, elem, msg) 
    { 
     var adiv = $get(elem); 
     adiv.style.visibility = visstring; 
     adiv.innerHTML = msg;      
    } 
</script> 

Tôi hy vọng rằng sẽ giúp. Lớp PageRequestManager dường như ít được biết đến và ít được sử dụng.

Các vấn đề liên quan