Php html sang rtf
MIME viết tắt của "Tiện ích mở rộng thư điện tử đa năng" là một Internet tiêu chuẩn về định dạng cho thư điện tử, hầu hết như mọi thư điện tử Internet được truyền qua giao thức SMTP theo định dạng MIME Type/sub-typeExtensionapplication/envoyevyapplication/fractalsfifapplication/futuresplashsplapplication/htahtaapplication/internet-property-streamacxapplication/mac-binhex40hqxapplication/msworddocapplication/msworddotapplication/octet-streamFile chứa nhị phân ứng dụng/octet-streambinapplication/octet-streamclassapplication/ . ms-excelxlaapplication/vnd. ms-excelxlcapplication/vnd. ms-excelxlmapplication/vnd. ứng dụng ms-excel xlsx/vnd. ms-excelxltapplication/vnd. ms-excelxlwapplication/vnd. ms-outlookmsgapplication/vnd.payment-initiationsetpayapplication/set- registration-initiationsetregapplication/vnd. ms-excelxlaapplication/vnd. ms-excelxlcapplication/vnd. ms-excelxlmapplication/vnd. ứng dụng ms-excel xlsx/vnd. ms-excelxltapplication/vnd. ms-excelxlwapplication/vnd. ms-outlookmsgapplication/vnd. ms-pkicertstoresstapplication/vnd. ms-pkiseccatcatapplication/vnd. ms-pkistlstlapplication/vnd. ms-powerpointpotapplication/vnd. ms-powerpointppsapplication/vnd. ms-powerpointpptapplication/vnd. ms-projectmppapplication/vnd. ms-workswcmapplication/vnd. ms-workswdbapplication/vnd. ms-workswksapplication/vnd. ms-workswpsapplication/vnd. openxmlformats-officedocument. bản trình bàyml. ứng dụng pptx thuyết trình/vnd. openxmlformats-officedocument. bảng tínhml. sheetxlsxapplication/vnd. openxmlformats-officedocument. xử lý văn bảnml. documentdocxapplication/winhlphlpapplication/x-bcpiobcpioapplication/x-cdfcdfapplication/x-compresszapplication/x-compressedtgzapplication/x-cpiocpioapplication/x-cshcshapplication/x-directordcrapplication/x-directordirapplication/x-directordxrapplication/x-dvidviapplication/x-gtargtarapplication/x- . ms-pkipkopkoapplication/zipzipaudio/basicauaudio/basicsndaudio/midmidaudio/midrmiaudio/mpegmp3audio/x-aiffaifaudio/x-aiffaifcaudio/x-aiffaiffaudio/x-mpegurlm3uaudio/x-pn-realaudioraaudio/x-pn-realaudioramaudio/x-wavwavimage/bmpbmpimage/ thần thánh 28-12-2007, 17. 09 Đã có khá nhiều trình soạn thảo văn bản WYSIWYG miễn phí được chia sẻ trên mạng, nhưng nếu bạn là một nhà phát triển web với mục đích thực thi, có thể một lúc nào đó bạn sẽ muốn xây dựng cho riêng mình một Rich Text Editor. Nếu vậy, bài viết này chắc chắn sẽ mang lại cho bạn một chút gì đó hữu ích. Ham doFormat as after. hàm doFormat(a,b){ if(editor. queryCommandEnabled(a)){ if(. b){b=null;} trình chỉnh sửa. execCommand(a,false,b); } } Như vậy, doFormat nhận vào 2 tham số. - a. tên của lệnh - b. value of command Ở đây, trình soạn thảo là biến toàn cục đã được định nghĩa bên ngoài hàm như trình bày phía trên. Khi được gọi, doFormat sử dụng phương thức truy vấnCommandEnabled của trình soạn thảo để kiểm tra khả năng thực thi lệnh a. Sau đó, tiếp tục kiểm tra tham số thứ 2, nếu không thấy thì gán cho nó giá trị null. If could thi command, call method execCommand. Đối với việc chèn hình ảnh và liên kết, có một chút khác biệt, chúng ta viết 2 hàm addLink và insertImage dành riêng cho nhiệm vụ này. Chúng được gọi theo cách tương tự như 3 nút lệnh trước. Trong IE, bạn có thể viết. biên tập viên. execCommand("CreateLink", true); Hoặc. biên tập viên. execCommand("InsertImage", true); Quy trình duyệt này sẽ hiển thị một hộp thoại để người dùng nhập vào các tham số thích hợp. http. //trang trại3. tĩnh. flickr. com/2014/2143437544_9b83c775e1_o. jpg http. //trang trại3. tĩnh. flickr. com/2225/2143456580_e53ca630eb_o. jpg Tuy nhiên, tính năng này chưa được Mozilla và Opera hỗ trợ, vì vậy, một số người thiết lập trình Rich Text Editor đã tự xây dựng các kiểu DialogBox riêng để thay thế. Việc đó không khó, nhưng trong bài viết này, chúng ta sẽ đơn giản hóa công việc bằng 1 hộp thoại nhắc. Dưới đây là hàm addLink. function addLink(){ var aLink=prompt('Nhập hoặc dán liên kết. ', ''); if(aLink){ doFormat('CreateLink', aLink); }}}} } Và hàm insertImage : hàm insertImage(){ tài liệu. getElementById('textArea'). nội dungWindow. focus(); var iURL=prompt('Nhập hoặc dán URL. ', ''); if(iURL){ doFormat('InsertImage', iURL); }}}} } Khi người sử dụng click trên nút [http://b.imagehost.org/0395/link1.gif], một hộp thoại prompt bật ra để họ nhập chuỗi siêu liên kết. Hàm addLink kiểm tra lại chuỗi này, nếu có giá trị thị gọi doFormat với 2 tham số. "CreateLink" - tên lệnh, và aLink - URL đích do người dùng cung cấp. Khi hàm insertImage được gọi, chúng ta sử dụng dòng lệnh đầu tiên để tập trung vào vùng soạn thảo. (Điều này là cần thiết để trình duyệt IE duyệt, bạn thử bỏ qua và chạy thử chương trình thì sẽ hiểu tại sao. ). Tiếp theo đó, 1 hộp thoại Nhắc mở yêu cầu người dùng nhập vào URL của hình ảnh. Cuối cùng, chúng ta gọi doFormat bằng lệnh "InsertImage" và giá trị iURL mà người dùng đã nhập. Nút lệnh [http. // b. máy chủ hình ảnh. org/0457/removeformatting. gif] cho phép loại bỏ mọi định dạng trên phần văn bản được chọn. Chúng ta viết hàm xử lý như sau. function unformat(){ doFormat('removeformat'); doFormat('unlink'); } Không có gì để giải thích nhiều. Command "removeformat" loại bỏ toàn bộ các thiết lập kiểu dáng văn bản. Command "unlink" gỡ bỏ liên kết cho phần văn bản đó. Cuối cùng, chúng ta có toàn bộ mã HTML và JavaScript như dưới đây. Rich Text EditorBây giờ thì Editor của chúng ta đã có thể hoạt động trên Mozilla, IE, Opera và Safari. Bản trình diễn. http. // sacroroyant. đại học. cc/Ví dụ/Trình chỉnh sửa/V1/rte. htm Phần sau, chúng ta sẽ tìm hiểu sâu hơn một số lệnh khác để mở rộng tính năng cho trình soạn thảo này, đồng thời viết lại kịch bản điều khiển Trình soạn thảo theo kiểu đối tượng. Refacing. thần thánh 29-12-2007, 17. 56 Định dạng văn bản tại chỗ. beham 30-12-2007, 19. 43 Tôi xin thêm cái chuyển đổi giữa chế độ code và chế độ deisgn mặc định + lấy nội dung mã HTML trong richtext mà mình sẽ cần khi "đăng" bài
thần thánh 31-12-2007, 22. 11 Khi ôm lấy những khái niệm xung quanh thuộc tính designMode và phương thức execCommand, việc xây dựng Rich Text Format Editor không còn là điều khó khăn nữa. Có thể những bạn nào qua topic này, lần đầu tiên nghe nói đến các khái niệm trên, sẽ có cùng cảm giác như vậy. Hiểu vấn đề là giải quyết vấn đề. Nếu muốn chương trình thực thi lệnh doFomat("bold"), khi nhấp vào hình ảnh này, chúng ta chỉ thực hiện lệnh gọi hàm. setBtnAction('btnBold', 'doFormat("bold")'); Khi chuỗi 'doFormat("bold")' được truyền vào hàm setBtnAction, . Giữ nguyên các thành phần điều khiển Editor như cũ, chúng ta viết lại mã HTML. Thay vì nhúng các hàm vào từng button, chúng ta đã cho mỗi hình ảnh một giá trị ID. Nếu cấu hình điều khiển WYSIWYG của chúng ta giống như 1 đối tượng, nó có thể mang các thuộc tính cơ bản như bản chất. tên, kích thước vùng làm việc, nội dung bên trong. Và bên cạnh đó là 1 loạt các phương thức thi hành công việc định dạng văn bản. chèn liên kết, chèn hình ảnh. This is a build function. hàm RichTextEditor(sID, oContain, sDefaultText, iWidth, iHeight){ cái này. ID=sID; này. content=sDefaultText; cái này. chiều rộng=(iWidth>300?iWidth. 500); này. chiều cao=(cân nặng>80?Chiều cao. 200); var sEditor='';';'; sEditor+='" style="width:'+this.width; sEditor+='px;height:'+this.height; sEditor+='px;overflow:auto;">'; setHTML(oContain,sEditor); this. Giao diện người dùng = tài liệu. getElementById(cái này. TÔI). contentWindow; cái này. biên tập = cái này. giao diện người dùng. tài liệu; với(cái này. editor){ designMode='On'; open(); write('');');'); close(); } } Các tham số : sID. chuỗi tên riêng cho từng Editor, bằng cách này, chúng ta có thể sử dụng nhiều Editor trên cùng 1 trang web. oChứa. phần tử chứa Editor mà các khung soạn thảo sẽ được tạo bên trong. sVăn bản mặc định. default text display when Editor open. Đây là 1 chuỗi HTML. iWidth. chiều rộng của khung soạn thảo. iHeight. chiều cao của khung soạn thảo. Trong hàm dựng, chúng ta thiết kế các thuộc tính. ID. định danh riêng nội dung. nội dung văn bản trong trình soạn thảo chiều rộng. chiều rộng chiều cao. chiều cao UI. tham chiếu đến khung iframe editor. tham chiếu đến tài liệu đối tượng của khung iframe. Biến này trực tiếp thi hành các lệnh. Hàm doFormat ở bản cũ sẽ trở thành phương thức formatText của lớp đối tượng RichTextEditor. RichTextEditor. nguyên mẫu. formatText=function(dấu phẩy, giá trị){ if(this. biên tập viên. queryCommandEnabled(lệnh)){ if(. value){value=null;} cái này. biên tập viên. execCommand(command,false,value); } } Và tương tự cho addLink, insertImage, unformat. RichTextEditor. nguyên mẫu. addLink=function(){ var aLink=prompt('Nhập hoặc dán liên kết. ', ''); if(aLink){ this. formatText('CreateLink', aLink); } } RichTextEditor. nguyên mẫu. insertImage=function(){ this. giao diện người dùng. focus(); var aLink=prompt('Nhập hoặc dán URL. ', ''); if(aLink){ this. formatText('InsertImage', aLink); } } RichTextEditor. nguyên mẫu. unformat=function(){ cái này. formatText('removeformat'); cái này. formatText('unlink'); } Xin ra chúng ta cũng thêm vào 1 phương thức mới là getContent để lấy nội dung văn bản. RichTextEditor. nguyên mẫu. getContent=function(){ return cái này. biên tập viên. thân thể. innerHTML; } Cuối cùng là 1 hàm dùng để khởi tạo trình soạn thảo, được gọi sau khi trang tải xuống để chỉnh sửa. function init(){ RTE=new RichTextEditor('RTE', 'wysiwyg', '', 500, 240); setBtnAction('btnBold', 'RTE.formatText("bold")'); setBtnAction('btnItalic', 'RTE. formatText("italic")'); setBtnAction('btnUnderline', ' RTE. formatText("underline");'); setBtnAction('btnInsertImage', 'RTE. insertImage();'); setBtnAction('btnAddLink', 'RTE. addLink();'); setBtnAction('btnUnformat', ' RTE. unformat();'); } Biến RTE được sử dụng để thể hiện lớp RichTextEditor. Các dòng sau thiết lập hành động cho từng nút lệnh trên thanh công cụ. init is call onload the same event. cửa sổ. onload=init ; Và thế là chúng ta đã có phiên bản Rich Text Editor mới, tuy không thay đổi trên giao diện, nhưng cấu trúc chương trình đã trở nên chặt chẽ hơn Chắc chắn. Bản trình diễn. http. // sacroroyant. đại học. cc/Ví dụ/Trình chỉnh sửa/V1/rte2. htm Còn đây là sản phẩm hoàn thiện. http. // d. máy chủ hình ảnh. org/0758/Biên tập viên. png (http. // sacroroyant. đại học. cc/Examples/Editor/) Từ bản demo Rút gọn đến sản phẩm sau cùng chỉ còn một khoảng thời gian ngắn, và chắc chắn bạn sẽ thấy dễ chịu hơn nếu đi tới đó một mình lol thần thánh 03-01-2008, 13. 00 Clipboard là một vùng nhớ tạm thời trong cửa sổ, nơi chứa dữ liệu mà chúng ta đã sao chép hoặc cắt. Các ứng dụng khác nhau vẫn được phép sử dụng chung khối dữ liệu này. Có nghĩa là bạn có thể sao chép văn bản trong MS Word, sau đó dán lên khung soạn thảo của Google Docs (http. // tài liệu. Google. com/). Và thêm thiết lập action trong hàm init : setActionOnButton('btnCut', 'RTE.useClipboard("cut");'); setActionOnButton('btnCopy', 'RTE.useClipboard("copy");'); setActionOnButton('btnPaste', 'RTE.useClipboard("paste");'); Kết quả sẽ như trang demo này : http://sacroyant.uni.cc/Examples/Editor/V1/rte3.htm :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::: * Bổ sung một chút Phương thức unformat không hoạt động chính xác trên Opera, đã được sửa lại như sau : var isOp=(navigator.appName=='Opera')?true:false; RichTextEditor.prototype.unformat=function(){ if(isOp){ var sel = this.UI.getSelection(); this.format('inserthtml', sel); } else{ this.format('removeformat'); this.format('unlink'); } } Ban biên tập xin cáo lỗi cùng quý độc giả lol thần thánh 28-02-2008, 05. 37 Nhúng bộ gõ chữ Việt thần thánh 13-07-2008, 11. 03 Cám ơn bác thần thánh rất nhiều. Em cũng đã làm được rồi nhưng em vẫn chưa biết dữ liệu được lấy từ bàn phím vào iframe rồi sẽ sử lý tiếp thế nào nữa. if em to it into a form, then will must get data as THẾ NÀO. Một lần nữa xin cám ơn bác. D. thần thánh 15-07-2008, 08. 13 cách lấy nội dung trong trình soạn thảo thì em đã hiểu nhưng em vẫn chưa biết truyền nội dung đó nên ẩn đầu vào như thế nào. D. Em sẽ phải tạo một kiểu đầu vào ẩn nhưng giá trị của nó em sẽ phải làm sao. D. Mong anh thông cảm em mới học java script nên đừng bao nhiêu. D. Và đây là hàm doSend : hàm doSend(){ var content=RTE. getContent(); // kiểm tra dữ liệu nếu muốn. //. //gán giá trị trong trình soạn thảo vào đầu vào ẩn. tài liệu. f. dữ liệu. value=content; //và gửi biểu mẫu. tài liệu. f. submit(); } Cuối cùng là gửi. php, sợ gì mà không kiểm tra nhỉ. ) ?$content=$_POST['data']; echo $content;< . < . < . ?> - Trong cấu trúc của hồ sơ HTML , form trên không nhất thiết phải bao lấy phần editor. - Nếu sử dụng iframe ẩn, bạn chỉ định mục tiêu cho biểu mẫu. Cách này phù hợp hơn cả khi làm việc với các WYSIWYG. - Nếu truyền dữ liệu qua XMLHttpRequest, bạn không cần phải tạo biểu mẫu này nếu không có các trường khác phải gửi đi. Đây là cách người dùng thích sử dụng nhất. Cảm ơn bạn đã quan tâm đến chủ đề này. ) thần thánh 12-08-2008, 17. 47 @sacroyant. bạn chèn thêm Yahoo eco bằng hàm nào thế nhỉ ? h=k; for(var j=0;j<4;j++){ if(this.emoticons[(h+j)]){ s+='';';'; } else{ s+=' | ';} k++; } s+=' } s+=' |
this.sm('btnEmoticon',s);
}
this. sm (sm = Set Menu)là phương thức được sử dụng để gán 1 chuỗi vào menu con thuộc tính.
cái này. is (is = Instance) là biến nội dung giữ vai trò hiện tại của Editor.
cái này. emoticonPath thuộc tính có giá trị đường dẫn đến thư mục chứa các hình ảnh.
Khi click vào 1 biểu tượng cảm xúc thì gọi phương thức insertImage với tham số là URL của file cấu hình.
onclick="'+this. là +'. insertImage(\''+this. biểu tượng cảm xúcPath+this. emoticons[(h+j)][2]+'\');"
Phương thức insertImage as after.
cái này. insertImage=function(url){
cái này. cm();
này. giao diện người dùng. focus();
var aLink=(url==null)?prompt('Nhập hoặc dán URL. ',''). url;
if(aLink){
this. fmt('InsertImage', aLink);
}
}
trong đó.
- cái này. cm(). close menu if have (cm = Close Menu)
- this. giao diện người dùng. tiêu điểm(). tập trung vào vùng soạn thảo.
Nếu không có tham số truyền vào cho phương thức, nó sẽ hiển thị hộp thoại nhắc nhở để nhận 1 đường dẫn cho hình ảnh muốn chèn. Nếu có tham số truyền vào, giá trị tham số sẽ được gán cho biến cục bộ aLink (ở đây là trường hợp nhất biểu tượng cảm xúc).
thần thánh
13-08-2008, 20. 42
site đó là thư viện truyện của bác ???
Bác có thể hướng dẫn chèn bảng hem ?
đang kết cái này mà hok . w00t.
Vâng, mấy cuốn hay hay tớ để đó coi dần :w00t:
Nếu bạn đã thành thạo HTML thì có khó khăn gì khi nhúng 1 bảng vào Trình chỉnh sửa không?. That qua that is insert 1 string HTML into only that. Ôi trời.
Hàm sau sẽ sinh mã HTML cho 1 bảng với số hàng và cột đã biết trước.
function createTable(rows, cols){
var s='
for(var i=0;i'; ';
for(var j=0;j';
}
s+='
}
s+='';
return s;
}
Bạn có thể thêm các tham số khác để cho phép người dùng tạo ra các table theo đúng ý họ muốn : width, height, border, cellpadding...
Chèn chuỗi vào vị trí con trỏ trong Editor rất đơn giản. Với IE, bạn tạo ra 1 Phạm vi đối tượng và sử dụng phương thức dánHTML của đối tượng này. Với các trình duyệt chuẩn, bạn sử dụng lệnh ImsertHTML.
Chúng ta có thể thêm 1 phương thức vào class Editor để chuyên trách nhiệm vụ nhúng các chuỗi, như sau.
Người chỉnh sửa. nguyên mẫu. insertStr=function(str){
if(isIE){
var aRange=this. biên tập. lựa chọn. createRange();
aRange. select();
aRange. pasteHTML(str);
}
else{
this. fmt('inserthtml',str);
}
}
Kết nối các điểm trên lại, bạn sẽ thấy cách tạo .
Ví dụ, mình viết 1 method insertTable đơn giản như dưới đây.
Biên tập viên. nguyên mẫu. insertTable=function(){
var r=prompt('Nhập số hàng. ','');
if(. r. isNaN(r). r
var c=prompt('Nhập số cột. ','');
if(. c. isNaN(c). c
cái này. insertStr(createTable(r, c));
}
Cách làm tiêu biểu là như thế đó bạn. w00t. vô tội.
[=========> Bổ sung bài viết
Đã thêm vào ví dụ.
http. //lovepm. đại học. cc/Ví dụ/Trình chỉnh sửa/
thần thánh
04-12-2008, 19. 07
Này này. Trước hết thank you Sacroyant nhiều.
Tui đang nghĩ tới 1 vấn đề chưa biết tìm ở đâu. Tui Upload tài liệu (doc, pdf. ) lên 1 thư mục trên WebServer, ý tôi bây giờ là khi viết bài, tôi muốn tạo siêu liên kết đến 1 tệp. doc thì làm sao nhỉ? .
Giống như nó tạo ra tag: Download
tóm lại là nó duyệt và tạo liên kết đến 1 tệp trên máy chủ chính? Bạn trả lời giúp tui nhé. Cảm ơn.
Cái này làm rất đơn giản. Ở phía client, bạn tạo ra 1 hộp thoại giả lập cửa sổ Open. Cửa sổ này có 1 vùng trống để liệt kê danh sách các tệp trong thư mục, phía dưới vùng liệt kê là 2 nút Mở và Hủy.
Giả sử dụng PHP, bạn viết 1 tệp đặt tên là danh sách. php đã giả sử, tệp này có nhiệm vụ duyệt thư mục và trả về danh sách các tệp bên trong. Use dir, filesize, filetype command. to get information about files. Dữ liệu gửi xuống máy khách có thể là XML, văn bản hoặc JSON tùy bạn.
Cuối cùng, bạn sử dụng AJAX để kết nối 2 phần việc lại với nhau.
Tóm lại chỉ cần vài bước rút ngắn.
Mở hộp thoại giả lập trên giao diện người dùng
Gọi danh sách tệp. php thực thi thông qua phương thức AJAX.
Xử lý dữ liệu nhận về.
Gán kết quả phân tích vào vùng liệt kê.
Bước 1 và 2 có thể đổi chỗ cho nhau.
pleiku83
05-12-2008, 14. 41
Tui hình dung được thủ tục đó, nhưng tui cũng mới nghiệp dư, đang phải tích phân cái source có sẵn chứ chưa biết nhiều và câu lệnh chính xác ntn. Đại khái tui xem qua cái Editor. js có sẵn, nó có đoạn khi "createlink" thì thi hành cái "execCommand(a,b)", cửa sổ Hyperlink mở ra như kiểu mặc định luôn như vậy, tôi ko biết có thể vô chỗ nào cả.
Bạn có thể chỉ chi tiết một chút được không.
- Use what command (code full) to open the open window.
- Danh sách tệp. nội dung php ntn? .
- Sau khi duyệt file (trên Server nó nhé, chứ ko phải Browser đến Computer đang dùng) nút OK submit cái gì để ghi hyperlink ra vùng text.
Tóm lại tui nghĩ nó cũng nhỏ nhỏ, bạn giúp tui code đầy đủ để đạt kết quả được ko? .
[=========> Bổ sung bài viết
Mà tại sao tui thấy mọi . com có bộ Editor có nút "File đính kèm" để tạo link download file. If ko có nút này, vậy mấy trang web như. http. //Đà Nẵng. vnn. vn/tenmien/vanban. asp
hoặc tui muốn tạo 1 trang "báo cáo tài chính" trong đó vừa có text, vừa có link tải file đính kèm thì làm sao?
lãng nhẽ
(Mình dùng ASP, ko có CMS như Joomla)
thần thánh
05-12-2008, 17. 13
Cửa sổ mà tôi nói đến chỉ là cái khung để chúng ta trình bày các tệp trong thư mục mà người dùng truy cập. Nó không liên quan gì đến siêu liên kết lệnh của trình soạn thảo.
Làm cửa sổ giả lập thì rất đơn giản, bạn xem 1 ví dụ trên trang chủ của mình qua hình này.
http. //e. máy chủ hình ảnh. org/0468/1_7. png (http. // sacroroyant. trang google. com/chỉ mục. htm?nl=vi)
Lớp để mở cửa sổ soạn thảo như dưới đây.
Hộp thoại chức năng (id, chiều rộng, chiều cao, nội dung, tiêu đề, biểu tượng){
cái này. id=id;
này. chiều rộng=chiều rộng;cái này. height=height;
này. tiêu đề=tiêu đề; cái này. nội dung=nội dung;
này. biểu tượng=biểu tượng. '';
này. iconPath=biên tập. iconPath. '';
này. open=function(closeFunc){
if(editor&&isIE&&editor. biên tập){
biên tập viên. biên tập. tiêu điểm();
dấu trang = tài liệu. lựa chọn. createRange();
}
var s='';
var el=rel(this. Tôi). phong cách;
el. position='absolute';
el. chiều rộng = cái này. chiều rộng+'px';
el. chiều cao = cái này. chiều cao tính bằng px';
gWS();
of(this. id=='box'){waiting();}
el. top=parseInt((cái này. chiều cao
el. left=parseInt((cái này. chiều rộng
s+='
s+='
s+='
s+='';';';
s+='
s+='
s+=this. nội dung;
s+='';
show(this. id);gTxt(cái này. id, s);
rel(this. Tôi). Phong cách. position='absolute';
rel(this. Tôi). Phong cách. zIndex='202';
setOpacity(this. id, 98);
}
cái này. close=function(){
ẩn(cái này. id);hide("transit");
}
this. changeStatus=function(){
if(this. trạng thái==0){cái này. open();}
else{this. close();}
}
}
Bạn có thể xem đầy đủ mã nguồn khi Xem nguồn.
Trong trường hợp của bạn, cái mà chúng ta trình bày không phải là 1 editor giống như thế này.
http. //e. máy chủ hình ảnh. org/0785/2_2. png
Tôi không đọc kỹ phần trước của bạn. Bạn muốn tạo liên kết chứ không phải mở tệp được chọn, vậy thay vì Mở sẽ là Tạo liên kết. Muốn nó làm việc như thế nào là ở bước phân tích dữ liệu được trả về bởi danh sách. php. Ví dụ 1 tập tin bất kỳ trong danh sách sẽ có dạng mã này.
File XYZ
selectMe là hàm gửi giá trị tham số . Và khi nhấn CreateLink, nó sẽ gán đường dẫn vào lệnh thực thi tương ứng với việc tạo liên kết. Đây chỉ là 1 cách.
Nếu bạn đã hình dung được các bước thì nên cố gắng tìm hiểu và tự giải quyết từng bước sẽ tốt hơn là nhờ ai đó giúp đỡ hoàn toàn.
thần thánh
25-12-2008, 21. 38
Tôi đã làm Editor rồi, nhưng khi đưa văn bản vào Editor rồi Submit.
Khi text ít thì mình Submit được nhưng khi text dài thì khi Submit hiện ra 1 bảng thông báo Security Warning như thế này.
" Trang web hiện tại đang cố mở một trang web trên Internet. Bạn muốn cho phép điều này? .
Có 2 nút YES và NO
Và phía dưới có 1 Warning:
" Cảnh báo. cho phép điều này có thể khiến máy tính của bạn gặp rủi ro bảo mật.
Nếu không tin tưởng trang Web hiện tại thì chọn KHÔNG "
Nhưng mình nhấn YES nó vẫn ko Gửi dc, trang web đứng yên.
Tôi không biết giải quyết thế nào. Mong mọi người giúp đỡ. Tớ đang rất cần cái này vì tớ đang làm 1 module Tin tức.
[=========> Bổ sung bài viết
Tôi đang làm bằng JSP nhé. Mong được sự giúp đỡ.
Bác nào có kinh nghiệm về JSP xem giúp em với nhé. Tôi chưa từng chơi với em JSP này. You can also do how to configure the string string ?
ngoc_viet08
09-01-2009, 09. 56
Định dạng văn bản tại chỗ.
đậm. in đậm văn bản
tên phông chữ. chữ chữ, giá trị. tên phông chữ. VD. arial, verdana.
cỡ chữ. khổ chữ, giá trị. các số từ 1 đến 7.
màu nền trước. chữ. vValue. chuỗi tên hoặc mã màu. VD. #0000ff, hải quân.
hilitecolor. màu nền (1). vValue. chuỗi tên hoặc mã màu. VD. #0000ff, hải quân.
in nghiêng. làm nghiêng văn bản
chỉ số dưới. text low down so with normal
superscript. đưa văn bản lên cao hơn bình thường
underline. gạch dưới văn bản
Định dạng khối văn bản.
tiêu đề. Format for a title. vValue.
thụt lề. cho khối văn bản lui vào 1 tab
insertorderedlist. liệt kê theo thứ tự thứ tự
insertunorderedlist. liệt kê không đánh số.
justifycenter. căn giữa
justifyfull. dàn đều 2 biên
justifyleft. căn trái
justifyright. căn cứ phải
outdent. cho block text lui ra 1 tab
Các lệnh khác.
tạo liên kết. tạo liên kết. vValue. chuỗi URL
xóa. xóa phần lựa chọn
inserthorizontalrule. chèn vào 1 phần tử
inserthtml. chèn vào 1 chuỗi HTML (2)
chèn hình ảnh. insert image. vValue. path to file image.
xóa định dạng. type bỏ các định dạng trong phần lựa chọn.
hủy liên kết. loại bỏ liên kết trong phần lựa chọn.
The command control editor.
hoàn tác. Khôi phục lại trạng thái trước khi có 1 thay đổi được ghi nhận (3)
redo. Khôi phục lại trạng thái trước khi hoàn tác 1 bước.
chọn tất cả. chọn toàn bộ bộ biên tập nội dung.
Danh sách trên chưa đầy đủ, nhưng là những gì cơ bản nhất cho 1 trình soạn thảo văn bản. Chúng là các lệnh nhận được sự hỗ trợ chung của nhiều trình duyệt.
Nhắc lại cú pháp của execCommand.
editableDocument. execCommand(sCommand [, bUserInterface] [, vValue])
Trong đó.
editableDocument. tham chiếu tên biến đến phần tử tài liệu của iframe đối tượng được sử dụng để thiết lập khung soạn thảo giả.
sLệnh. chuỗi tên lệnh. Không phân biệt được hoa - normal.
bGiao diện người dùng. biến tùy chọn hiển thị các DialogBox. Luôn luôn thiết lập là sai để tránh lỗi trong Mozilla và Opera.
giá trị. value for command. Nếu lệnh không cần chỉ định giá trị, sử dụng null.
Thông thường vValue là 1 chuỗi, ngoại trừ giá trị cho kích thước chữ có thể định dạng interger, nhưng nói chung vẫn nên đưa về kiểu chuỗi.
* Chú thích.
Với IE, cần thay bằng command backcolor.
Chỉ lệnh hỗ trợ Mozilla duy nhất này. Với IE, có thể sử dụng các lệnh cụ thể cho từng đối tượng muốn chèn, như. InsertInputButton, InsertTextArea, InsertMarquee. Xem thêm tại đây (http. //msdn2. Microsoft. com/en-us/library/ms533049%28VS. 85%29. aspx).
Các thay đổi được ghi nhận có thể là bất cứ hành động nào làm đi nội dung khác vốn có trong Trình chỉnh sửa, chẳng hạn như việc nhập vào, xóa đi, hoặc đổi màu 1 ký tự. Hoàn tác và Làm lại chỉ làm việc hoàn hảo trong Mozilla.
cảm ơn về mấy cái lệnh rất hay này. tuy nhiên bạn có thể giới thiệu toàn bộ cho mình về tất cả các lệnh , hay có tài liệu đầy đủ cũng được ko ?
chứ biết được mấy cái này rồi mà giờ muốn viết thêm , phát . cảm ơn
ví dụ như chèn phương tiện , chèn đèn flash ,chèn hình ảnh chung dòng với hình hoặc chữ bao quanh hình. thì làm sao ?
ngoc_viet08
18-02-2009, 09. 27
execCommand => thực hiện 1 câu lệnh
queryCommandEnabled => trạng thái của các câu lệnh câu lệnh (bật / tắt )
queryCommandIndeterm => ?? .
queryCommandState => trạng thái của 1 command ???
queryCommandSupported => command này trình duyệt có được hỗ trợ ??
queryCommandValue => giá trị của command ???
bạn có thể giải thích rõ hơn về các cái này ko .
có trạng thái thì phải kiểm tra 1 đoạn văn bản đã được áp dụng lệnh chưa để làm như bạn thuyhuongcd nói nhỉ ?
còn lệnh createlink mình thấy ko hoạt động. cả trên demo của bác chủ topic cũng vậy. khi tạo ra 1 link thì chả thấy nó đâu.
một điều e ngại nữa là cái RTE này dùng để thuận tiện cho việc soạn bài gửi lên website. nhưng có vẻ nó ko mạnh lắm thì phải. ví dụ muốn tạo 1 hình ảnh và chỉ lên nó có chữ như thuộc tính Art của nó. hay tạo 1 liên kết đến 1 địa chỉ và liên kết đó được ghi bằng 1 tên khác như " trang chủ của tôi " cũng không bik làm sao
. Các bạn có thể giúp mình ko ?
[=========> Bổ sung bài viết
ờ . hóa ra xài addlink là nó biến đoạn đang chọn thành cái link .cái này mình mới biết.
Mình cần hỏi 1 vài thứ như.
- trong RTE của các diễn đàn. có mục chọn màu sắc cho văn bản. khi nhấp vào biểu tượng của nó, hãy chọn 1 bảng màu và chọn màu. cái đó mình phải dùng js để viết à ?
- làm sao để thiết lập 1 hình ảnh nằm riêng 1 dòng hay chữ sẽ nằm bao quanh hình ảnh đó.
mong các bạn giúp đỡ.
ngoc_viet08
13-03-2009, 11. 42
à , cho mình hỏi. làm sao lấy nội dung của editor bằng php để lưu vào mysql nhỉ. nó lấy innerHTML của body editor luôn hả ???
[=========> Bổ sung bài viết
à thấy rồi , ở trang 4. do mình đọc ko kĩ . thanks bạn sacroyant nhé .
[=========> Bổ sung bài viết
chức năng doSend(){< . getContent();
var content=RTE.getContent();
// kiểm tra dữ liệu nếu muốn.
//.
//gán giá trị trong trình soạn thảo vào đầu vào ẩn.
tài liệu. f. dữ liệu. value=content;
//và gửi biểu mẫu.
tài liệu. f. submit();
}
//
lại có vấn đề nữa. when submit form = câu lệnh js thế này thì làm sao xác định giá trị của lần gửi.
vì ở trang gửi. php
em check if (S_POST["name"]=="value") do trang send. php this , em used to handle many form from many pages other.
[=========> Bổ sung bài viết
////// .
cách nào để chèn 1 mẩu tin query từ csdl vào nội dung body của editor nhỉ .
em sử dụng trình chỉnh sửa để chỉnh sửa nội dung cũ từ csdl. nhưng không biết cách nào để viết vào trình soạn thảo, trong khi viết vào biểu mẫu thì dễ dàng. ai biết chỉ giúp.
thần thánh
22-06-2009, 13. 15
Quên không cho câu hỏi này của bạn. cười nhạo.
Giữ một điều thú vị nữa mà không thấy bàn tới đó là xác định trạng thái của một đoạn văn bản để thay đổi trạng thái nút nhấn tương ứng. Không giới hạn như trình soạn thảo của google khi di chuyển con trỏ vào vị trí chuỗi trong đậm thì nút đậm sẽ lồi xuống, di chuyển ra bên ngoài thì nó sẽ nổi lên
vui làm như vậy bạn phải sử dụng . Thuộc tính này trả về nút sâu nhất theo cấu trúc DOM trên vùng đã chọn. Từ đây bạn khảo sát tên và thuộc tính của nút cũng như các nút trên cấp để xác định kiểu đang được áp dụng với phần văn bản. Không giới hạn nếu tên thẻ là b hoặc giá trị độ dày phông chữ của kiểu thuộc tính là đậm, ta biết văn bản được chọn có thể hiển thị dưới định dạng đậm. Em thấy tính năng này không cần thiết lắm nên không được bỏ qua công việc. Thay vào đó, tôi mới sửa đổi cách hiển thị hộp thoại chèn liên kết và hình ảnh, không sử dụng dấu nhắc nữa, để có nhiều thiết lập hơn. Bạn có thể kiểm tra thử trên trang chủ của mình, nhưng phiên bản máy chủ của Google Page Creator này thì không hỗ trợ tải lên hình.
http. //img386. hình ảnh hack. chúng tôi/img386/3480/73011524. png
sacroyant ơi bạn dùng phần mềm nào soạn thảo php mà code màu đẹp vậy, nhìn rất có hứng thú code, bạn cho mình biết được không? .
Tớ dùng NotePad++ trên Windows và SciTE trên Linux.
Nhưng nếu bạn hỏi về việc trình bày code trên diễn đàn thì mình trả lời rằng với diễn đàn VBB thì chỉ cần đặt code vào cặp thẻ
là được.
Ví dụ.
cái này. blurItem=function(){
this. clearInfo();
if(this. đang chơi){
if(this. cc==cái này. con trỏ. cp){
var item=this. bộ sưu tập [này. cc]. mục [này. con trỏ. ip];
mục. bang=1;
mục. Out();
}
này. listStateUpdate();
}
}
Sẽ chọn kết quả.
cái này. blurItem=function(){
this. clearInfo();
if(this. đang chơi){
if(this. cc==cái này. con trỏ. cp){
var item=this. bộ sưu tập [này. cc]. mục [này. con trỏ. ip];
mục. bang=1;
mục. Hết();
}
này. listStateUpdate();
}
}
thần thánh
06-09-2009, 13. 02
Đóng chủ đề chưa nhỉ ? . com is being. Quý năm nay tôi gần như không dùng YM lol
Có chuyện gì thế bác DJT? Nếu cần liên hệ với tôi thì bác cứ gửi mail đến địa chỉ [email protected] là được. Mấy năm nay tôi gần như không dùng YM lol
[=========> Bổ sung cho bài viết
Tôi vừa nhận email của bạn kenphan19, nội dung như sau :
Chào bạn ^^.
Cảm ơn bạn đã có bài viết rất hay trên ddth. com. Mình đang viết riêng cho mình 1 cái RTE ^^. Nhưng đến phần focusNodes để nhận biết focus hiện tại đang ở đâu và liệt kê đầy đủ tag con và cha ^^ mình dùng jquery fw để viết. dựa trên hướng dẫn của bạn. Nếu các bạn giúp mình làm việc này nhé ^^, mình đang rất cần cái đó ^^ tìm hiểu về nó trong jquery thì nó tay. Giúp mình với nhé ^^
Cảm ơn trước ^^
Trước đây có 1 bạn thắc mắc vấn đề tương tự trong topic này và mình cũng đã trả lời . Nay xin nói rõ hơn một chút về phương pháp giải quyết.
Từ editor mẫu thứ 2 (http. //sacroyantlabs. trang google. com/rte2. htm), tôi đã chỉnh sửa lại một chút, chỉ giữ lại 3 nút cơ bản để minh họa.
Việc cần làm đầu tiên là chúng ta thêm vào 2 lớp CSS để biểu thị trạng thái khác nhau của định dạng nút điều khiển.
. btn {biên giới. đầu 1px #fccccc;}
. btn_ {viền. inset 1px #fccccc;}
Sau đó trong HTML, chúng ta thiết lập trạng thái mặc định cho các nút bằng cách thêm lớp thuộc tính.
nhiệm vụ ghi nhận trạng thái của vùng văn bản đang hoạt động, chúng ta phải dựa trên các điều kiện của chuột và bàn phím như click, select, mouseup, keypress. Người dùng không giới hạn muốn đặt con trỏ vào giữa một từ in đậm, họ có thể điều khiển trên bàn phím hoặc sử dụng chuột. Chúng ta cần theo dõi các sự kiện như thế nào để xác định phần tử đang được chọn trong văn bản.
Trong ví dụ này, tôi chỉ theo dõi các sự kiện nhấn phím và di chuột. Sau khi tập lệnh được thêm vào khi khởi động thành công trường thảo luận. (Vui lòng nhớ lại đoạn mã khởi tạo đối tượng RichTextEditor hoặc mã tham khảo trong tệp đính kèm bên dưới).
.
cái này. biên tập = cái này. giao diện người dùng. tài liệu;
with(this. editor){
designMode='On';
open(); . content+'');
close();
}
if(this. biên tập viên. addEventListener){
cái này. biên tập viên. addEventListener('keypress', checkSelection, true);
this. biên tập viên. addEventListener('mouseup', checkSelection, true);
}
else if (this. biên tập viên. attachmentEvent){
này. biên tập viên. AttachEvent('onkeypress', checkSelection);
this. biên tập viên. AttachEvent('onmouseup', checkSelection);
}
.
Ở đây có hàm checkSelection, nó có dạng.
function checkSelection(){
var focusNode;
if(window. getSelection){
focusNode=RTE. giao diện người dùng. cửa sổ. getSelection(). focusNode;
}
else if (tài liệu. getSelection){
focusNode=RTE. giao diện người dùng. tài liệu. getSelection(). focusNode ;
}
else nếu (tài liệu. lựa chọn){
focusNode=RTE. giao diện người dùng. tài liệu. lựa chọn. tạoPhạm vi(). parentElement();
}
var currentTag=focusNode. cha mẹNode. tagName;
rel('btnBold').className=(currentTag=='B')?'btn_': 'btn';
rel('btnItalic'). className=(currentTag=='I')?'btn_ '. 'btn';
rel('btnUnderline'). className=(currentTag=='U')?'b tn_'. 'btn';
if(currentTag=='SPAN'. currentTag=='DIV'){
var atts=focusNode. cha mẹNode. getAttribute('style');
rel('btnBold'). className=(atts. indexOf('trọng lượng phông chữ. in đậm;'). ==-1)?'btn_'. 'btn';
rel('btnItalic'). className=(atts. indexOf('kiểu chữ. nghiêng;'). ==-1)?'btn_'. 'btn';
rel('btnUnderline'). className=(atts. indexOf('trang trí văn bản. gạch chân;'). ==-1)?'btn_'. 'btn';
}
}
Không có gì khó hiểu với hàm này. Được gọi khi có sự kiện keypress hoặc mouseup xảy ra trong vùng soạn thảo, checkSelection verify node are focus option theo trình duyệt. Sau đó nó tìm ra thẻ tên, nếu là B, I hoặc U thì cứ thay đổi trạng thái nút định dạng tương ứng.
Nếu là thẻ "chứa" (thẻ chứa) thì đi tìm kiểu giá trị thuộc tính và chuỗi xử lý này, sau đó mới xử lý nút điều khiển thay đổi trạng thái. Ví dụ được viết cho SPAN và DIV, các thẻ "chứa" khác như blockquote, table. tùy chọn bạn thêm vào.
Kết quả thu được mà bạn có thể kiểm tra trên trang minh họa.
http. //sacroyantlabs. trang google. com/rte4. htm
Còn đây là mẫu mã. http. //sacroyantlabs. trang google. com/Editor_FocusNode. rar
Ngoài trang minh họa, các bạn có thể thấy chức năng trên hoạt động không hoàn hảo vì muốn chính xác thì phải viết khá nhiều mã lệnh, nhưng phương pháp chung nhìn một cách đơn giản thôi .
meohoang11
03-10-2009, 18. 36
Truoc het minh thanks ban vi da share bo soan thao cho moi nguoi dung va phat trien them.
Hiển nay minh đang ứng dụng cái này của bạn cho web minh. Tuy nhiên, khi minh soan thao 1 phan van ban ( HTML co chua hinh va cac tag ), luu vao database , hien thi ra trang chu thi ok.
Tuy nhiên khi mình tải lại vào bộ soạn thảo để chính sửa chữa cơ sở dữ liệu thì không biết lỗi, không hiển thị luôn, bản có các chi minh cách khác phục.
code chen chua minh nhu sau.
< . < . < .
Code goi ham nhu sau:
neu du lieu lay ra tu database dang html don gian thi ok, nhung .
phungdinhvu
28-07-2010, 18. 09
bác sacroyant ơi cho em hỏi, em đang làm trang nè http. //kstn. tk/kstn. tk/những người khác/bài đăng mới. php?location=boxnews, dùng RTE rất đơn giản thui, khi test với FF thì được, còn khi test với IE thì.
em chọn chữ rồi, khi click vào font-weight để chọn chữ đậm hay chữ nghiêng. Thì vị trí lựa chọn trong RTE nó bị mất biến, thành ra mấy chức năng này nó bị vô hiệu. Bác có thể chỉ cho em chỗ sai được không? .
Cám ơn các bác nhé.
[=========> Bổ sung bài viết
bác thần thánh ơi cho em hỏi . //kstn. tk/kstn. tk/những người khác/bài đăng mới. php?location=boxnews, dùng RTE rất đơn giản thui, khi test với FF thì được, còn khi test với IE thì.
em chọn chữ rồi, khi click vào font-weight để chọn chữ đậm hay chữ nghiêng. Thì vị trí lựa chọn trong RTE nó bị mất biến, thành ra mấy chức năng này nó bị vô hiệu. Bác có thể chỉ cho em chỗ sai được không? .
Cám ơn các bác nhé.
[=========> Bổ sung bài viết
các bác vào link này. http. //kstn. tk/chỉ mục. php?showthread=detail. 8
thi hộ em với, nói là như thế này, khi em chọn văn bản như thia nè.
http. //cA5. upanh. com/10. 781. 14920427. FBY0/testingRTE. png
roi sau do click vao mot vung nao do "font-weight", thi vung chon text no bi mat di, thang thu em khong chon bold hay italic duoc.
Pa con giup em voi, em tim mai khong ra loi ne.
phần biên tập mã phần tích. js của bac sacroyant ma khong tim duoc. Hix, chi tim duoc cai focus() lam viec voi IE, nhung cung khong duoc. hu hu, giup em voi cac bac oi.
[=========> Bổ sung bài viết
các bác vào link này. http. //kstn. tk/chỉ mục. php?showthread=detail. 8
thi hộ em với, nói là như thế này, khi em chọn văn bản như thia nè.
http. //cA5. upanh. com/10. 781. 14920427. FBY0/testingRTE. png
roi sau do click vao mot vung nao do "font-weight", thi vung chon text no bi mat di, thang thu em khong chon bold hay italic duoc.
Pa con giup em voi, em tim mai khong ra loi ne.
phần chỉnh sửa mã phần tích. js của bac sacroyant ma khong tim duoc. Hix, chi tim duoc cai focus() lam viec voi IE, nhung cung khong duoc. hu hu, giup em voi cac bac oi.
thần thánh
31-12-2010, 11. 33
Mấy bác xây dựng rich text editor làm gì trong khi có cái FCKeditor rồi (cực tầy luôn)
Nói như bác thì ta cũng chả nên sinh con đẻ cái làm gì, . w00t.
Trước, trong và sau cái sự đẻ đã có sự "sướng" mà :w00t:
Mới thì thích dùng cái mình làm hơn, muốn nó sao thì nó thế, không thừa không thiếu.
RTE, bản cuối, không hỗ trợ IE7-.
http. // sacroroyant. đại học. cc/Ví dụ/Biên tập viên/2010/rte. htm
Bản này định vị các nút bằng float, nên cho phép co giãn kích thước thoải mái, sử dụng ảnh sprite tất cả trong 1 rất gọn nhẹ, thêm bảng ký tự đặc biệt (hãy thỉnh thoảng tôi cần .
Cấu trúc chương trình tốt hơn cho phép tạo nhiều khả năng trên trang. Việc khởi tạo có thể ở phía người dùng cuối được đơn giản hóa đến mức thấp nhất, muốn bất kỳ div nào trở thành vùng soạn thảo, chỉ cần gán cho nó 1 id và gọi.
RTE. apply('divID')
Thiết lập kích thước cho trình soạn thảo tùy chọn chỉ định bên ngoài biểu định kiểu của bạn.
Có thể chỉ định kích thước ngay trong khi gán (sẽ ghi đè lên giá trị trong biểu định kiểu).
RTE. apply(elementID, defaultContent, width, height)
Source code share tại đây, bác nào rảnh rỗi thì xem thử cho vui lol
http. //www. hộp. net/shared/jzd0tbngv1