如何用enque script函数解决WordPress右键禁用脚本加载延迟问题
解决Seraphinite Accelerator导致内容保护脚本延迟的方案
方法1:排除内容保护插件/脚本免受加速器优化
- 打开Seraphinite Accelerator的后台设置,找到「JavaScript优化」或「延迟加载」相关选项卡
- 在「排除脚本」或「排除插件」输入框中,添加你的内容保护插件名称,或者它的核心脚本文件名(比如插件目录里的
xxx-protection.js) - 保存设置后刷新页面,右键禁用功能即可立即生效
方法2:用WordPress官方函数优先加载自定义脚本
要是你想保留自己写的右键禁用代码,别往footer.php塞,用wp_enqueue_script让脚本在页面头部加载:
- 新建一个
disable-right-click.js文件,把右键禁用代码放进去:
document.addEventListener('contextmenu', e => e.preventDefault()); // 要是需要禁用文本选择,再加下面这行 document.addEventListener('selectstart', e => e.preventDefault());
- 把这个文件传到Astra主题文件夹下的
js目录(没有就新建一个js文件夹) - 打开主题的
functions.php,添加这段代码:
function load_protection_script_first() { wp_enqueue_script( 'disable-right-click', get_stylesheet_directory_uri() . '/js/disable-right-click.js', array(), '1.0', false // false表示在<head>里加载,true才会放footer ); // 强制脚本不延迟,确保优先级最高 add_filter('script_loader_tag', function($tag, $handle) { if ($handle === 'disable-right-click') { return str_replace('src', 'defer="false" src', $tag); } return $tag; }, 10, 2); } add_action('wp_enqueue_scripts', 'load_protection_script_first', 1); // 优先级设为1,确保最先加载
- 删掉之前在footer.php加的代码,刷新页面测试即可
方法3:直接把脚本嵌到页面头部(最简单的办法)
嫌函数麻烦的话,直接改Astra的header.php文件,在</head>标签前插入这段脚本:
<script> document.addEventListener('contextmenu', e => e.preventDefault()); // 可选:禁用文本选择 document.addEventListener('selectstart', e => e.preventDefault()); </script> </head>
这样脚本会在页面最开始加载,一打开页面就生效,不会有延迟
内容的提问来源于stack exchange,提问作者Natsu Dragneel
相关产品推荐
相关产品推荐

