我使用cloudflare来缓存我的wordpress网站。
但是,我需要登录用户绕过cloudflare缓存,以便获取最新内容。
为此,我为登录用户设置了一个cookie,如果该cookie存在,我会将“bypass = 1”附加到页面上的每个URL。然后我将cloudflare设置为绕过任何带有该参数的url。
我一直在页面上的网址中添加bypass = 1,如下所示:
<script>
if (document.cookie.indexOf("cachen") > -1) {
$(function() {
$("a").prop("href", function() {
var url = $(this).prop("href");
if (url.indexOf('#') == -1) {
if (url.indexOf('?') == -1) {
return url + "?bypass=1";
}
}
});
});
}
</script>
但是在最近的WordPress更新之后,它停止了工作。
我发现我可以在函数之前加上:
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
并且代码可以工作....但是后来我开始遇到一些插件的问题。
我当前的wordpress使用jquery.js?ver = 1.12.3
我认为问题是函数中的某些东西与更新的jquery版本不兼容,但我不知道如何解决这个问题。
答案 0 :(得分:0)
您可以尝试使用jQuery.noConflict();
以下是适用于我的代码片段:
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
var noConflict3 = jQuery.noConflict(); // Assign and use noConflict mode
noConflict3(document).ready(function() {
// My code here
});
$ = jQuery.noConflict(); // Had to assign it back, otherwise WP was full of JS errors
</script>
这是jQuery noConflict doc:Link
它对我有用,我希望它也适合你:)
答案 1 :(得分:0)
哦,找到了解决方案。
我在Chrome中的开发者工具中发现我收到了消息:
?bypass = 1:1202 Uncaught TypeError:$不是函数(匿名 功能)@?bypass = 1:1202
我抬起头来发现:
Uncaught TypeError: undefined is not a function (anonymous function) in Wordpress
说:
Wordpress默认以noConflict模式运行,更改DOM 准备包装
jQuery(function($){ // your code goes here });
否则$将是未定义的
这就是诀窍,我现在能够删除旧版本的jquery并且代码可以工作。