Các phương pháp sau đây:setTimeout (f, 0) tương đương? tại sao nó giải quyết vấn đề qua trình duyệt?
Init: function (selector, settings)
{
setTimeout(function()
{
var s =
{
width: '100%',
script_url: '/Content/Scripts/tiny_mce/tiny_mce.js',
theme: "advanced",
plugins: "autolink,lists,pagebreak,style,layer,table,paste,directionality,noneditable,visualchars,xhtmlxtras,template",
theme_advanced_buttons1: "fontselect,fontsizeselect,|,bold,italic,underline,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist",
theme_advanced_buttons2: "",
theme_advanced_buttons3: "",
theme_advanced_buttons4: "",
theme_advanced_more_colors: false,
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: "none",
theme_advanced_resizing: false,
convert_urls: !!$(selector).data("richEditor-ConvertUrls") // by default we don't convert urls
};
$.extend(s, settings);
$(selector).tinymce(s);
},0);
}
công trình trên tất cả các trình duyệt, đối với một số lý do, tôi cần gọi setTimeout(f,0)
cho firefox, phương pháp này được gọi là trên một ajax tải một phần trên MVC, mà không cuộc gọi này, treo biên tập viên trên firefox và ngắt trang (nhấp vào kết quả công cụ trên trường hợp ngoại lệ thường xuyên hơn không). với cuộc gọi, mọi thứ hoạt động hoàn hảo.
Tôi đã tự hỏi làm thế nào tôi có thể tránh cuộc gọi setTimeout này (thông qua một số cách giải quyết khác), và nếu đó không phải là một lựa chọn tôi muốn biết tại sao.
Tôi sợ điều này có thể không phải là giải pháp sạch nhất cho trường hợp này.
Cuộc gọi lại ajax của bạn có cập nhật trang của bạn với nội dung không? Điều này có thể được kích hoạt trước khi DOM được cập nhật. Nếu đó là trường hợp tôi nghĩ bạn có thể sử dụng sự kiện sẵn sàng của jQuery để đợi DOM hoàn thành trước khi áp dụng tinymce vào '$ (selector)'. – JesseBuesking
nó cập nhật DOM, nhưng điều này cũng thực hiện trong '$ (f() {}); ' – bevacqua
Có lý do nào bạn khai báo' s' bên trong khoảng thời gian chờ và không nằm ngoài phương thức Init (ngoài đăng nó ở đây). Ngoài ra là có một cách bạn có thể tạo lại vấn đề này trong jsfiddle? Điều đó sẽ giúp tôi dễ dàng thử và giúp đỡ hơn. – JesseBuesking