我周一开始工作时发来一封电子邮件,说明我们管理/维护的其中一个Wordpress网站上的可视化编辑器无效。
果然,我能够复制该问题并发现控制台中存在大量的Javascript错误。
我搜索了第一个错误,并在Wordpress的论坛上发现了一些帖子,人们需要将以下内容添加到他们的wp-config.php文件中以解决问题。
define('CONCATENATE_SCRIPTS', false );
然而,在整个互联网上都没有任何地方可以解释为什么突然之间需要添加。
正因为如此,我开始深入研究这个问题,看看能不能发现它到底发生了什么。
我点击了Wordpress管理区域,发现问题总是回到这行代码。
Uncaught SyntaxError: missing ) after argument list
load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils,underscore,thickbox,shortcode,media-up…:227
的第227行
https://DOMAIN_NAME/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils,underscore,thickbox,shortcode,media-upload&ver=4.3.1
如下
if(!params['modal']){jQuery(document).bind('keydown.thickbox',function(e){if(e.which==27){tb_remove();return false;}});}}catch(e){}}
当我在Wordpress管理区域的以下页面上时会发生这种情况。
// Dashboard
/wp-admin/index.php
// Plugins page
/wp-admin/plugins.php
// Edit user page
/wp-admin/user-edit.php?user_id=###
// Edit post page
/wp-admin/post.php?post=###&action=edit
在每个页面上,load-script.php源代码都不同,所以我在下面提供了这些信息。
// Dashboard
/wp-admin/index.php
https://DOMAIN_NAME/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils,underscore,thickbox,shortcode,media-upload&ver=4.3.1
// Plugins page
/wp-admin/plugins.php
https://DOMAIN_NAME/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils,underscore,wp-util,wp-a11y,updates,thickbox,shortcode,media-upload&ver=4.3.1
// Edit user page
/wp-admin/user-edit.php?user_id=###
https://DOMAIN_NAME/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils,zxcvbn-async,underscore,thickbox,shortcode,media-upload&ver=4.3.1
// Edit post page
/wp-admin/post.php?post=###&action=edit
https://DOMAIN_NAME/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,underscore,thickbox,shortcod&load%5B%5D=e,plupload,jquery-ui-position,jquery-ui-datepicker,jquery-ui-menu,jquery-ui-autocomplete,jquery-ui-resizable,jquery-ui-draggable&load%5B%5D=,jquery-ui-button,jquery-ui-dialog,media-upload&ver=4.3.1
然后我进入了管理区域中的一个页面,其中Javascript错误不会出现!
// The page that lists all of the pages on the site
/wp-admin/edit.php?post_type=page
在此页面上,load-script.php源代码如下
// The page that lists all of the pages on the site
/wp-admin/edit.php?post_type=page
https://DOMAIN_NAME/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils,thickbox,underscore,shortcode,media-upload&ver=4.3.1
然后我直接转到该文件是一个浏览器并专门搜索以下字符串,因为这是所有其他页面都出错的字符串。
if(!params['modal']){jQuery(document).bind('keydown.thickbox',function(e){if(e.which==27){tb_remove();return false;}});}}catch(e){}}
令我惊讶的是,这行代码并未缩小,而当Javascript错误发生时,代码IS在所有其他实例中缩小。
if(!params['modal']){
jQuery(document).bind('keydown.thickbox', function(e){
if ( e.which == 27 ){ // close
tb_remove();
return false;
}
});
}
} catch(e) {
//nothing here
}
}
服务器上没有任何内容被更改/更新,也没有更新Wordpress,主题或插件。
我还禁用了所有插件并激活了默认的Twenty Fifteen主题,但问题仍然存在。
在SAME服务器上甚至有Wordpress网站,因为这个网站有问题,而其他网站没有这个问题。
在那天结束时,我真的不知道我上面提供的详细信息是否有助于我弄清楚到底发生了什么以及为什么突然需要添加define('CONCATENATE_SCRIPTS', false );
到wp-config.php文件以使Javascript错误消失,以便可视化编辑器再次工作。
如果有的话,这是我见过的有关那些需要将define('CONCATENATE_SCRIPTS', false );
添加到他们的wp-config.php文件以使错误消失的人提供的最多细节。
答案 0 :(得分:0)
JS代码中存在语法错误:
目前还不清楚这段代码试图实现什么,但语法错误明确:
尝试更改:
if(!params['modal']){
jQuery(document).bind('keydown.thickbox', function(e){
if ( e.which == 27 ){ // close
tb_remove();
return false;
}
});
}
} catch(e) {
//nothing here
}
}
要:
if(!params['modal']){
jQuery(document).bind('keydown.thickbox', function(e){
if ( e.which == 27 ){ // close
tb_remove();
return false;
}
});
}
看起来此代码从文件中加载,注册为"短代码" 您也可以尝试使用wp_dequeue_script函数删除冲突的脚本或在队列中上下移动
wp_dequeue_script("shortcode");
wp_enqueue_script("shortcode","script_url",array('jquery','lastScript'));