2010-09-14 35 views

Trả lời

25

Không, không có sự kiện như vậy.

Tuy nhiên, một thẻ <script> đặt trực tiếp sau khi các yếu tố HTML sẽ có một hiệu ứng tương tự: Nó sẽ được thực hiện ngay sau khi các phần tử đã được hiển thị:

<input type="text" id="input123" value="Hello World!"> 

<script> 
alert("Input123 is now ready:"+document.getElementById("input123).value); 
</script> 

Trong hầu hết các trường hợp, tuy nhiên, cách tốt nhất là sử dụng toàn bộ tài liệu load (hoặc DOMReady hoặc jQuery .ready()) để bắt đầu mọi hoạt động tập lệnh. DOM sẽ hoàn toàn sẵn sàng sau đó.

0

Không thể thực hiện điều này. Tuy nhiên bạn có thể sử dụng jQuery + $ (tài liệu) .ready (function) để sửa đổi bất kỳ trường nhập nào bạn muốn ngay sau khi trang tải xong.

5

No. Tuy nhiên, bất kỳ tập lệnh nào được đặt sau khi đánh dấu phần tử đầu vào, sẽ được chạy với phần tử đầu vào có sẵn vì nó được phân tích cú pháp trước tập lệnh. Vì vậy, nếu điều này là tất cả trong cơ thể:

<input id="a"> 
<script>document.getElementById('a');</script> 

Điều đó sẽ vẫn hoạt động.

+0

vấn đề là id không được biết đến với tôi khi phần tử được trả lại. – imdhmd

+0

Làm cách nào để bạn biết đầu vào nào để chạy mã? – Gareth

+1

Gareth, lưu ý cách tôi chọn phần tử có id 'a' trong tập lệnh mẫu. Imdad, bạn có thể sử dụng các phương tiện khác để chọn phần tử, chẳng hạn như chọn thẻ hoặc thậm chí là chọn lớp. –

0

Không, không có. Chỉ cần chạy mã của bạn từ trình xử lý tài liệu "sẵn sàng" hoặc sử dụng một cái gì đó như jQuery để cung cấp cho bạn cách chạy mã "sẵn sàng" (tức là khi DOM hoàn tất nhưng hình ảnh có thể chưa được tải).

20

Cách để mô phỏng sự kiện như vậy là tạo thuộc tính dữ liệu tùy chỉnh (HTML-5 hợp lệ) và sử dụng làm công cụ chọn. Sau đó, trong mã javascript chính, bạn có thể thêm bộ chọn cho bất kỳ thứ gì có thuộc tính data-XXX cụ thể này và đánh giá mã javascript bên trong.

Ví dụ HTML code:

<div data-onload="sampleFunction('param1', 2)"></div> 

Ví dụ javascript mã (sử dụng jQuery). Cũng có thể sử dụng DOM thông thường để tìm các phần tử có thuộc tính này.

/* Find any element which has a 'data-onload' function and load that to simulate an onload. */ 
$('[data-onload]').each(function(){ 
    eval($(this).data('onload')); 
}); 

Điều này hoạt động tốt. Tôi thực sự sử dụng nó trong sản xuất.

+3

Nói chung, nó được coi là thực hành xấu để sử dụng eval và nó nên tránh bất cứ khi nào có thể. Đánh giá có thể khá không an toàn vì nó sẽ chạy bất kỳ mã nào nằm bên trong thuộc tính tải dữ liệu. Bạn có thể sử dụng gọi lại chung và chỉ chuyển đối số qua 'dữ liệu-tải 'như vậy http: // codepen.io/kevingimbel/pen/0c9366e17a96288ee8a685d6d53a805f –

+0

điều này thật tuyệt vời, cảm ơn bạn –

1

Tôi có phần tử đầu vào được thêm động vào tài liệu và cần được khởi tạo.

Đó không phải là hoàn hảo, nhưng đây là một cách để khởi tạo widget lần đầu tiên các đầu vào được sử dụng:

<input onfocus="initwidget(this)"> 
Các vấn đề liên quan