Tôi đang cố thêm thuộc tính khi sử dụng trình soạn thảo wysiwyg sử dụng lệnh "createLink". Tôi nghĩ rằng nó sẽ là tầm thường để lấy lại nút được tạo ra sau khi trình duyệt thực hiện lệnh đó.Truy xuất nút cha từ vùng chọn (phạm vi) trong Gecko và Webkit
Tắt, tôi chỉ có thể lấy nút mới được tạo này trong IE. Ý tưởng nào?
Ví dụ dưới đây vấn đề (các bản ghi gỡ lỗi tại triển lãm dưới đầu ra khác nhau ở mỗi trình duyệt):
var getSelectedHTML = function() {
if ($.browser.msie) {
return this.getRange().htmlText;
} else {
var elem = this.getRange().cloneContents();
return $("<p/>").append($(elem)).html();
}
};
var getSelection = function() {
if ($.browser.msie) {
return this.editor.selection;
} else {
return this.iframe[0].contentDocument.defaultView.getSelection();
}
};
var getRange = function() {
var s = this.getSelection();
return (s.getRangeAt) ? s.getRangeAt(0) : s.createRange();
};
var getSelectedNode = function() {
var range = this.getRange();
var parent = range.commonAncestorContainer ? range.commonAncestorContainer :
range.parentElement ? range.parentElement():
range.item(0);
return parent;
};
// **** INSIDE SOME EVENT HANDLER ****
if ($.browser.msie) {
this.ec("createLink", true);
} else {
this.ec("createLink", false, prompt("Link URL:", "http://"));
}
var linkNode = $(this.getSelectedNode());
linkNode.attr("rel", "external");
$.log(linkNode.get(0).tagName);
// Gecko: "body"
// IE: "a"
// Webkit: "undefined"
$.log(this.getSelectedHTML());
// Gecko: "<a href="http://site.com">foo</a>"
// IE: "<A href="http://site.com" rel=external>foo</A>"
// Webkit: "foo"
$.log(this.getSelection());
// Gecko: "foo"
// IE: [object Selection]
// Webkit: "foo"
Nhờ sự giúp đỡ về vấn đề này, tôi đã lùng sục các câu hỏi liên quan về SO với không thành công!
@ Jason - Có điều gì sai với câu trả lời của tôi không? Tôi chưa nhận được phản hồi nào từ bạn ... – gnarf
Xin lỗi, ví dụ của bạn không hoạt động và mã gần như giống với những gì tôi vừa thu gọn hơn. Tuy nhiên, nó vẫn không hoạt động cho việc triển khai của tôi, tôi tự hỏi liệu nó có liên quan gì đến iframe hoặc trình soạn thảo trình duyệt can thiệp hay không. Tôi sẽ cập nhật khi tôi hoàn thành công việc. Cảm ơn đã giúp đỡ! – Jason