强制使用define('CONCATENATE_SCRIPTS',false); 突然间

unu*_*unu 5 javascript php wordpress

我周一上班时发了一封电子邮件,说明我们管理/维护的一个Wordpress网站上的可视化编辑器无法正常工作.

果然,我能够复制这个问题,发现控制台中有大量的Javascript错误.

Javascript错误

我搜索了第一个错误,并在Wordpress论坛上发现了几个帖子,人们需要将以下内容添加到他们的wp-config.php文件中以解决问题.

define('CONCATENATE_SCRIPTS', false );
Run Code Online (Sandbox Code Playgroud)

然而,在整个互联网上没有任何地方可以解释为什么突然之间需要添加.

正因为如此,我开始深入研究这个问题,看看能不能发现它到底发生了什么.

我点击Wordpress管理区域,发现问题总是回到这行代码.

Uncaught SyntaxError: missing ) after argument list
load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils,underscore,thickbox,shortcode,media-up…:227
Run Code Online (Sandbox Code Playgroud)

第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
Run Code Online (Sandbox Code Playgroud)

如下

if(!params['modal']){jQuery(document).bind('keydown.thickbox',function(e){if(e.which==27){tb_remove();return false;}});}}catch(e){}}
Run Code Online (Sandbox Code Playgroud)

当我在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
Run Code Online (Sandbox Code Playgroud)

在每个页面上,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
Run Code Online (Sandbox Code Playgroud)

然后我到了管理区域中的一个页面,其中Javascript错误不会出现!

// The page that lists all of the pages on the site
/wp-admin/edit.php?post_type=page
Run Code Online (Sandbox Code Playgroud)

在此页面上,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
Run Code Online (Sandbox Code Playgroud)

然后我直接转到该文件是一个浏览器并专门搜索以下字符串,因为这是所有其他页面都抛出错误的字符串.

if(!params['modal']){jQuery(document).bind('keydown.thickbox',function(e){if(e.which==27){tb_remove();return false;}});}}catch(e){}}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这行代码并未缩小,而在发生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
   }
}
Run Code Online (Sandbox Code Playgroud)

服务器上没有任何内容被更改/更新,也没有更新Wordpress,主题或插件.

我还禁用了所有插件,并激活了默认的Twenty Fifteen主题,但问题仍然存在.

在SAME服务器上甚至有Wordpress站点,因为这个站点有问题,而其他站点没有这个问题.

在那天结束时,我真的不知道我上面提供的详细信息是否有助于我弄清楚到底发生了什么以及为什么define('CONCATENATE_SCRIPTS', false );突然之间需要添加到wp-config.php文件中使Javascript错误消失,以便可视化编辑器再次工作.

如果有的话,这是我见过的任何人提供的关于那些需要添加define('CONCATENATE_SCRIPTS', false );到他们的wp-config.php文件以使错误消失的细节.

Ser*_*ect 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
   }
}
Run Code Online (Sandbox Code Playgroud)

到:

if(!params['modal']){
                 jQuery(document).bind('keydown.thickbox', function(e){
                       if ( e.which == 27 ){ // close
                              tb_remove();
                              return false;
                       }
                 });                 
}
Run Code Online (Sandbox Code Playgroud)

看起来这个代码是从注册为“短代码”的文件中加载的,您也可以尝试使用 wp_dequeue_script 函数来删除冲突的脚本或将它们在队列中上下移动

 wp_dequeue_script("shortcode");
 wp_enqueue_script("shortcode","script_url",array('jquery','lastScript'));
Run Code Online (Sandbox Code Playgroud)