Thứ Sáu, 17 tháng 12, 2010

Xây dựng 1 simple text editor

Một thủ thuật hay được sử dụng trong thiet ke website PHP






Xây dựng 1 simple text editor

Chào các bạn. Một số bạn không thích dùng rich text editor cho lắm, nên họ sẽ dùng simple text editor thay thế vì nó đơn giản hơn, và được các trình duyêt hỗ trợ nhiều hơn

Dùng CSS để đinh dạng :

Các bạn cũng có thể tự tạo cho mình với phong cách khác.
Tiếp theo ta sẽ tạo 2 mảng : một mảng chứ tag mở (tag open), một mảng chứ tag đóng (tag end). 2 mảng này cần được gián các giá trị tuơng đương nhau để lát nữa khi chèn tag, không bị lỗi “râu ông này cắm cằm bà kia”.

Đây là những biến toàn cục, có thể gọi được khi ở trong hàm. Các bạn có thể thay thế ‘{’ và ‘}’ bằng ‘[' và ']‘ cho giống BBCODE.
Sau đó, ta viết một hàm để ấn định các việc sẽ làm khi có sự kiện onclick trên các button ta vừa tạo trên :

Hàm này chút nữa sẽ đưa vào sự kiện onload.
Tiếp theo ta viết hàm chèn tag.
 Code như sau :

navigator.appName sẽ lấy tên trình duyệt mà ta đang sử dụng. Vì Netscape và Internet Explorer sẽ phải có những phuơng thức khác nhau để chèn code, nên ta mới kiểm tra. Hầu hết các trình duyệt đề có navigator.appName là “Netscape”, riêng IE là “Internet Explorer”. Các bạn có thể thử bằng javascript với câu lệnh alert(navigator.appName);
Chúng ta truy vấn tới đối tượng textarea thông qua biến :
var obj = document.getElementById(’editor’;
obj.scrollTop sẽ lấy ra vị trí scroll trong textarea. Khi có nhiều dòng, việc này sẽ hữu ích. Ta lấy trước vị trí này, lát lại dùng thuộc tính obj.scrollTop gán lại vị trí cũ để tạo cảm giác thuận tiện cho người dùng.
obj.selectionStart và obj.selectionEnd giúp chúng ta lấy vị trí của đoạn text được chọn ở đầu và ở cuối. Nên nhớ, đầu tiên đối với lập trình luôn luôn là 0.
Ta sẽ chèn tag bằng cách chèn lại đoạn text mới với tag của chúng ta. Ta sẽ lôi ra từng phần của đoạn text đó : Phần đầu – từ vị trí 0 đến vị trí đầu của vùng chọn, phân 2 – từ vị trí đầu vùng chọn cho đến cuối vùng chọn và phân 3 – từ cuối vùng chọn cho đến hết đoạn text :

Sau đó ta sẽ đưa result vào lại value của textarea. Thật đơn giản.
Sau đó, ta sẽ select vùng add tag bằng code :
Ta chọn từ vị trí đầu được select ban nãy (trước khi chèn tag) tới vị trí cuối bằng tổng độ dài string các tags và vị trí cuối của vùng chọn ban nãy.
Dùng obj.scrollTop = pos; để đưa vị trí scroll đến vị trí vùng chèn tags khi có nhièu dòng có scroll bar bên hông.
Đối với IE thì Browser này có hỗ trợ bạn phưong thức document.selection.createRange() để xử lí chuỗi đang select.

document.selection.createRange().parentElement().n ame == ‘editor’ kiểm tra để chắc rằng vùng text đựoc chọn phải là vùng có nút cha tên là ‘editor’.
Sau đó ta gán vùng text được chọn bằng đoạn text mới mang tags : document.selection.createRange().text = tagO[num] + str + tagE[num];
Cuối cùng ta select lại vùng đó :

Ta focus lại textarea bằng obj.focus();
Ta có thể viết hàm sau để thực thi hàm khi đã load xong trang web :

Có thể nó không cần thiết, nhưng với 1 số lượng lớn hàm cần đựoc thưc thi sau khi load thì tốt hơn hết là ta nên viết.
Ta đưa hàm của ta vào là xong
addLoadFunc(pre);
Nguồn : thiet ke web gia re

Không có nhận xét nào:

Đăng nhận xét