体内的OnLoad不适用于wordpress吗?

时间:2019-03-22 23:53:16

标签: php jquery wordpress

Wordpress网站,使用Jquery和CSS为内容div创建了预加载器,我在这里找到了一个简单而出色的工具:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_loader5

<script type="text/javascript">
jQuery(document).ready(function( $ ) {
//A page can't be manipulated safely until the document is "ready."
var myVar;

function myFunction() {
  myVar = setTimeout(showPage, 3000);
}

function showPage() {
  document.getElementById("loader").style.display = "none";
  document.getElementById("content").style.display = "block";
}
});
</script>
<style type="text/css">
#loader {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 1;
  width: 150px;
  height: 150px;
  margin: -75px 0 0 -75px;
  border: 16px solid #f3f3f3;
  border-radius: 50%;
  border-top: 16px solid #3498db;
  width: 120px;
  height: 120px;
  -webkit-animation: spin 2s linear infinite;
  animation: spin 2s linear infinite;
}

@-webkit-keyframes spin {
  0% { -webkit-transform: rotate(0deg); }
  100% { -webkit-transform: rotate(360deg); }
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* Add animation to "page content" */
.animate-bottom {
  position: relative;
  -webkit-animation-name: animatebottom;
  -webkit-animation-duration: 1s;
  animation-name: animatebottom;
  animation-duration: 1s
}

@-webkit-keyframes animatebottom {
  from { bottom:-100px; opacity:0 } 
  to { bottom:0px; opacity:1 }
}

@keyframes animatebottom { 
  from{ bottom:-100px; opacity:0 } 
  to{ bottom:0; opacity:1 }
}

#content {
  display: none;
}
</style>
<body onload="myFunction()" style="margin:0;">

<div id="loader"></div>
<div id="content" class="site-content container clear">
Preload this text.
</div>

错误是: myFunction is not defined at onload ((index):420)

是否存在针对WordPress或其他简单方法(针对特定div ID添加预加载器)的解决方法?

2 个答案:

答案 0 :(得分:0)

您必须使用wordpress操作wp_head将JavaScript加载到页面标题中。将此粘贴在您的儿童主题function.php中:

function my_scripts() {
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function( $ ) {
            var myVar;

            function myFunction() {
                myVar = setTimeout(showPage, 3000);
            }

            function showPage() {
                document.getElementById("loader").style.display = "none";
                document.getElementById("content").style.display = "block";
            }
        });
    </script>
    <?php
}
add_action('wp_head', 'my_scripts');

edit:只是为了清理-您不必在标头中加载所有的javascript,但是您收到的错误是因为在定义函数之前调用了该函数。因此,如果您将功能粘贴在head标签之间,则应该可以使用。

答案 1 :(得分:0)

我认为有一种将jQuery与WordPress结合使用的更好方法:

    <script type="text/javascript">
      jQuery.noConflict()(function($){
           "use strict";

        $(document).ready(function() {
          //A page can't be manipulated safely until the document is "ready."
          var myVar;

          function myFunction() {
            myVar = setTimeout(showPage, 3000);
          }

          function showPage() {
            $("#loader").hide();
            $("#content").show();
          }
        });
      });
    </script>