Wordpress管理面板上的jQuery错误(tinyMCE未定义)

时间:2013-01-16 06:18:36

标签: jquery wordpress

将Wordpress从3.2升级到3.5后,我在管理端遇到jQuery错误。 以下是错误。

Error: ReferenceError: tinyMCE is not defined
Source File: http://domainname.com/wp-includes/js/tinymce/langs/wp-langs-en.js?ver=345-20111127

任何人都可以帮助我。感谢

5 个答案:

答案 0 :(得分:23)

最好使用声明:

define('CONCATENATE_SCRIPTS', false); 
wp-config.php中的

答案 1 :(得分:17)

在阅读了一百篇关于关闭所有内容的帖子后,重新安装所有内容,在键盘上挥动鸡骨头并在我的肩膀上撒盐,我决定认真对待。

tinyMCE未定义意味着完全相同。假设:从未加载过。检查页面来源http://yourdomain.com/wp-includes/js/tinymce/tiny_mce.js?ver=359-20131026'>或tiny_mce.js的其他一些脚本标记。我打赌你没有。如果你这样做,这不是你的解决方案。如果不这样做,请继续阅读。

我找到了应该将js标记放在页面中的代码... \ wp-includes \ class-wp-editor.php。

有一个if块“if($ compressed){...”将把... \ wp-includes \ js \ tinymce \ wp-tinymce.php加载到js标签中(不起作用) $ compressed = 1,或者$ \ wp-includes \ js \ tinymce \ tiny_mce.js当$ compressed = 0.所以我在if块之前设置$ compressed = 0来强制else。这解决了我的问题。

这是一个简单的解决方案,如果它不能解决您的问题,它很容易被逆转,而不会有破坏WP生态圈中任何其他因素的风险。

答案 2 :(得分:1)

在我的情况下,禁用我在functions.php中进行的延迟javascript增强会导致加载编辑页面时此错误消失。

答案 3 :(得分:0)

对于遇到此问题并稍微拔头发的其他人,@ dale3h的答案是我的解决方案。

如果您的functions.php中有一个函数挂接到script_loader_tag过滤器中,但并不总是返回原始标签标记的相应部分,或者其中存在某种错误,它会导致某些脚本无法加载,因为要输出到页面的脚本首先通过此过滤器运行。

为了避免出现这种情况,我决定要执行白名单脚本处理,具体取决于我想赋予它们的额外属性,因此可以有条件地完成工作(保持所有其他脚本不变):

// Manage extra attibutes for enqueued scripts
function foo_script_extras( $tag, $handle, $src ){

    $whitelist = array(
        'js-font-awesome-core'  => array(
            'sri'   => 'sha384-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
            'defer' => true
        ),
        'js-font-awesome-light' => array(
            'sri'   => 'sha384-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
            'defer' => true
        ),
        'js-popper'             => array(
            'sri'   => 'sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ'
        ),
        'js-bootstrap'          => array(
            'sri'   => 'sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm'
        ),
        'js-gtag'               => array(
            'async' => true
        )
    );

    // Construct the script if we want to give it extra attributes
    if( array_key_exists( $handle, $whitelist ) ){

        // Extra markup
        $extra  = '';
        $mods   = $whitelist[$handle];

        // Check for SRI
        if( array_key_exists( 'sri', $mods ) ){
            $extra .= ' integrity="' . $mods['sri'] . '" crossorigin="anonymous"';
        }

        // Check for deferral
        if( array_key_exists( 'defer', $mods ) ){
            $extra .= ' defer';
        }

        // Check for async
        if( array_key_exists( 'async', $mods ) ){
            $extra .= ' async';
        }

        // Reutrn full script tag
        return '<script src="' . $src . '"' . $extra . '"></script>';

    }else{

        // Return the tag as-is otherwise to avoid breaking it
        return $tag;

    }

}
add_filter( 'script_loader_tag', 'foo_script_extras', 10, 3 );

就检查要添加到白名单句柄的属性而言,这不是一个非常通用的解决方案,我会沿用“对于白名单句柄的每个属性,如果是布尔值,则添加密钥”并且是真的,否则添加它的值”,但是SRI需要两个属性(完整性和跨域),因此我暂时将其保留。

此外,如果您在页面标记中的某处没有看到/wp-includes/js/tinymce/(类似于@Mar所说的内容,但是确切的脚本名称可能会在版本之间改变),那么该脚本将无法加载! / p>

答案 4 :(得分:-4)

来自文档:

  

Using Your Browser to Diagnose JavaScript Errors

     

如果您遇到交互式功能问题,可能是由于JavaScript错误或冲突造成的。例如,您的弹出菜单可能会被破坏,您的元数据库不会拖动,或者您的添加媒体按钮不起作用。 [...]本指南将向您展示如何在不同的浏览器中诊断JavaScript问题。

     
      
  • 第1步:尝试其他浏览器
  •   
  • 第2步:启用SCRIPT_DEBUG
  •   
  • 第3步:诊断
  •   
  • 第4步:报告
  •