未捕获的TypeError:无法读取null wp-embed.min.js的属性“秘密”

时间:2018-08-17 10:46:52

标签: wordpress

我的控制台出现一个错误,显示未捕获的TypeError:无法在a.wp.receiveEmbedMessage(wp-embed.min.js?x59911:1)处读取null的属性“秘密”

有没有办法解决这个问题?

4 个答案:

答案 0 :(得分:8)

问题与Wordpress wp-embed.js有关。更改以下代码/

if ( ! ( data.secret || data.message || data.value ) ) {

if ( ! data || ! ( data.secret || data.message || data.value ) ) {

第32行。它应该可以解决问题。参考:https://core.trac.wordpress.org/ticket/44832

答案 1 :(得分:5)

该问题的解决方案似乎取决于您的WordPress版本。在4.9.8中,/wp-includes/js/wp-embed.min.js中有问题的代码段如下所示:

var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){...}

在这种情况下,没有退出条件,而是继续条件。如果满足上述条件,将执行以下代码。因此,您需要检查是否满足条件,而不是不满足。

这对我有用:

var d=c.data;if(d&&(d.secret||d.message||d.value))...

它首先检查d是否有效(而不是null),然后继续检查是否满足以下任何条件。

确保在上传修复程序后重新加载没有缓存的页面。 Chrome上的FirefoxWindows Ctrl + F5 Command + Shift < / Chrome上的/ kbd> + R Firefox上的Mac

答案 2 :(得分:1)

直接修改 wp-embed.min.js ,它可以完美运行,并且不会显示控制台错误。

特别是,在最小的代码中,我更改了这段代码

[sS]([oO]([mM]([eE]([tT]([hH]([iI]([nN]([gG])?)?)?)?)?)?)?)? { printf("found prefix"); }

这段代码

 > if(d.secret||d.message||d.value)

(请注意,第一个没有分号,第二个没有分号)

但是,我不建议以任何方式更改WP核心代码。

答案 3 :(得分:-1)

使用代码禁用在WordPress中嵌入

您可以将以下内容添加到WordPress主题的functions.php文件中。

Parent1:Child1,Child2,Child3,Child4
Parent2:Child1,Child2,Child3,Child4
Parent3:Child1,Child2

或者您也可以使用wp_dequeue_script函数。

function disable_embeds_code_init() {

 // Remove the REST API endpoint.
 remove_action( 'rest_api_init', 'wp_oembed_register_route' );

 // Turn off oEmbed auto discovery.
 add_filter( 'embed_oembed_discover', '__return_false' );

 // Don't filter oEmbed results.
 remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

 // Remove oEmbed discovery links.
 remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

 // Remove oEmbed-specific JavaScript from the front-end and back-end.
 remove_action( 'wp_head', 'wp_oembed_add_host_js' );
 add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );

 // Remove all embeds rewrite rules.
 add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

 // Remove filter of the oEmbed result before any HTTP requests are made.
 remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}

add_action( 'init', 'disable_embeds_code_init', 9999 );

function disable_embeds_tiny_mce_plugin($plugins) {
    return array_diff($plugins, array('wpembed'));
}

function disable_embeds_rewrites($rules) {
    foreach($rules as $rule => $rewrite) {
        if(false !== strpos($rewrite, 'embed=true')) {
            unset($rules[$rule]);
        }
    }
    return $rules;
}

尝试使用此代码。工作正常...

谢谢!