创建我的第一个Wordpress插件并遇到JavaScript加载问题。
我定义了一个Class,它通过wp_enqueue_script
运行包含JavaScript的多个函数。
以下是展示问题的示例JS
文件:
//The alert will fire
alert('javascript is firing');
// This will return an error saying
//Cannot read property 'setAttribute' of undefined
document.getElementsByTagName("body")[0].setAttribute("ng-app", "app");
plugin.php:
<?php
/*
Plugin Name: Wordpress Plugin
Plugin URI: http://www.wordpressplugin.io
Description: A Wordpress Plugin
Author: Me
Version: 1.0
Author URI: http://www.me.com
*/
define('Wordpress Plugin', '1');
class wordpressPlugin {
function __init(){
add_action( 'wp_enqueue_scripts', array( $this, 'angularScripts'));
}
function angularScripts(){
wp_enqueue_script('app', plugin_dir_url( __FILE__).'js/app.js',array('jquery'), null, false);
}
//Create instance of class
$wpNG = new wordpressPlugin();
// Activate Plugin
add_action( 'init', array( $wpNG, '__init' ), 1000 );
?>
app.js
alert('hello');
document.getElementsByTagName("body")[0].setAttribute("ng-app", "app");
警报将触发,但document.getElements
将无法运行并返回未定义的错误。但是,如果我将其包含在window.onload
函数中,document.getElements
将正常运行。做window.onload
并不理想。
JavaScript
如何设置才能在不需要window.onload
的情况下运行?