我正在编写一个插件来支持谷歌图形。它在公共端工作得很好,但在管理端间歇性地呈现出奇怪的效果,并且间歇性地抛出错误,这让我觉得JS运行得太快了。(例如,TypeError: null is not an object (evaluating \'document.getElementById(colControlId).appendChild\')
, 但当我检查页面时,该元素绝对存在。
驱动一切的函数作为回调注册到Google库:
// Load the Visualization API and the corechart package.
google.charts.load(\'current\', {\'packages\':[\'corechart\', \'controls\']});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(initializeData);
// Query a CSV for the data
function initializeData() {
let graphs = document.getElementsByClassName("cwraggbp_chart");
The
Google docs 说:“我不知道。”;当包裹[由
google.charts.load
] 加载完成后,将不带参数调用此回调函数。加载程序还将在调用回调之前等待文档完成加载"E;
但是,如果DOM完全加载,我看不出我怎么会间歇性地出现这个错误,我也不知道是什么;“已加载文档”;方法因此,由于这在公共方面可以完美地工作,但在管理方面却不行,我想知道是否。。。有些事情是不同的。
我正在加载脚本:
public function enqueue_scripts() {
wp_enqueue_script( $this->plugin_name . \'-public\',
plugin_dir_url( __FILE__ )
. \'js/cwra-google-graph-block-public.js\', // this is where the JS above is
array( $this->plugin_name . \'googlecharts\', \'jquery\' ),
$this->date_version(
\'js/cwra-google-graph-block-public.js\'), false );
wp_localize_script( $this->plugin_name . \'-public\',
\'cwraggbp\',
array(
\'contentdir\' => wp_upload_dir()[\'baseurl\']
. \'/cwraggb\'
));
wp_enqueue_script( $this->plugin_name . \'googlecharts\',
\'https://www.gstatic.com/charts/loader.js\',
array(), $this->version, false );
}