【问题标题】:Script for svg only fires after refreshsvg 脚本仅在刷新后触发
【发布时间】:2021-02-09 19:59:39
【问题描述】:

我在this wordpress page 上有两个使用 CSS 和 JavaScript 自定义的可点击 svg 文件。第一个 svg(大小:447kb)加载没有问题,单击时脚本会触发。第二个 svg 加载时间更长(大小:993kb),.onclick 仅在页面刷新时才有效。(控制台说:未捕获的 TypeError:无法设置属性 'onclick' of null)

经过大量研究,我怀疑这是 Ajax 问题。没有停用 Ajax 的选项,所以我尝试了以下函数将脚本放入页脚:

function load_js_assets() {
    if( is_page(#) ) {
        wp_register_script('script', 'url/script.js', array( 'jquery' ), '0', false);
        wp_enqueue_script('script');
    } 
}

add_action('wp_enqueue_scripts', 'load_js_assets', 99999);

这没有做任何事情。

在 script.js 中,我尝试了 window.onload, window.addEventListener("load", function(){}, document.load, document.addEventListener("DOMContentLoaded",...) 没有任何效果。

目前我的脚本是这样的:

window.addEventListener("load", function(){

(function() {
/*function for svg1*/
}; 
})();

(function(){
/*function for svg2*/
};
})();

});

请问这里还有其他选择吗? (请原谅我的非 DRY 编码方式,我还是个菜鸟)

【问题讨论】:

    标签: javascript wordpress svg


    【解决方案1】:

    尝试使用此方法应用 onclick 处理程序 -

    $(document.body).on('click', '.update' ,function(){
    

    【讨论】:

    • 感谢您的回复。不幸的是,这没有用。使用 onclick 处理程序包装函数时,该脚本根本不起作用。首先它说“Uncaught TypeError: $ is not a function”。由于 Wordpress 具有 jQuery 的兼容模式,我不得不将 $ 更改为“jQuery”。也没有让它工作。我将脚本留给了您的 onclick 处理程序。你还有其他建议吗?干杯!
    【解决方案2】:

    我用 setTimeout 方法解决了这个问题。也许不是理想的解决方案,但它确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多