将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
任何人都可以帮助我。感谢
答案 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步:报告