有没有办法阻止TinyMCE自动关注页面加载?

Bri*_*iec 10 javascript jquery tinymce

我的表单上有很多输入字段,其中一个是使用TinyMCE(版本3.5.2).一旦TinyMCE加载,它就会将焦点设置为自身.我怎样才能防止这种情况发生?我想保留默认选择的第一个输入.

这就是我的代码现在的样子

var tinymce = $('#Content');
tinymce.tinymce({
    theme: "advanced",
    plugins: "...",
    theme_advanced_buttons1: "...",
    theme_advanced_buttons2: "...",
    theme_advanced_buttons3: "...",
    theme_advanced_buttons4: "...",
    theme_advanced_toolbar_location: "top",
    theme_advanced_toolbar_align: "left",
    theme_advanced_statusbar_location: "bottom",
    theme_advanced_resizing: true,
    content_css: [...],
    template_external_list_url: "lists/template_list.js",
    external_link_list_url: "lists/link_list.js",
    external_image_list_url: "lists/image_list.js",
    media_external_list_url: "lists/media_list.js",
    template_replace_values: {
        username: "Some User",
        staffid: "991234"
    }
});
Run Code Online (Sandbox Code Playgroud)

更新:

经过一些测试后,看起来这个问题只出现在IE9中.Chrome,FireFox,Opera和Safari在页面加载时不会将焦点设置到编辑器.IE7和IE8模式下的IE9也没有将焦点设置在页面加载上,但即使您尝试将焦点设置为另一个输入,IE9本身也会将焦点设置到编辑器.

这一切都会在您使用textarea中的值加载页面后发生更改.当你这样做时,IE9的工作方式与其他浏览器类似.现在我在textarea中加载一个单一空格的页面,这使得IE9正常工作.

Zuu*_*uul 1

将有助于您了解剩余的输入和表单结构,以了解更好的方法,但类似的内容应该有所帮助:

jquery

function myCustomOnInit() {
    $('form *:input[type!=hidden]:first').focus();
}

tinyMCE.init({
        ...
        oninit : myCustomOnInit
});
Run Code Online (Sandbox Code Playgroud)

来自文档

此选项使您能够指定在所有编辑器实例完成初始化后要执行的函数。这很像 HTML 页面的 onload 事件。

注意:您还可以将函数名称作为字符串传递。但在这种情况下,该函数必须在页面的全局范围内声明。

这里的技巧是为第一个可见输入设置焦点:

$('form *:input[type!=hidden]:first').focus();
Run Code Online (Sandbox Code Playgroud)

请参阅这个工作示例


编辑

我花了相当多的时间来测试它并使其适用于 IE9,但它是:

请参阅此工作解决方案

jQuery

setup : function(ed) {
  ed.onLoadContent.add(function(ed, o) {
    var controlLoad = setTimeout(function() {
      if ($('.mceIframeContainer').size()==1) {
        $('form *:input[type!=hidden]:first').focus();
        clearTimeout(controlLoad);
      }
    }, 100);
  });
}
Run Code Online (Sandbox Code Playgroud)

这样做的目的是运行超时,直到.mceIframeContainer找到类,这意味着加载完成。找到它后,为第一个输入元素设置焦点并清除超时。