【问题标题】:Wordpress plugin, send string to JS functionWordpress 插件,发送字符串到 JS 函数
【发布时间】:2015-04-30 11:49:00
【问题描述】:

所以我为 wordpress 网站创建了一个插件。在其中,我想调用一个位于我刚刚入队的文件中的 JavaScript 函数(带有字符串)。但什么都没有发生。有人可以看到错误吗?

function tsd_getscript() {
    if(is_single()){
        wp_enqueue_script( 'imagefix-js', get_template_directory_uri() . '/js/imagefix.js', array(), '1.0.0', true);
        echo "<script>alertText('TEST');</script>";
    }
}
add_action( 'wp_enqueue_scripts', 'tsd_getscript' );

在 imagefix.js 中,代码如下:

function alertText(string){
    alert(string);
}

我得到的只是控制台说 alertText 未定义。所以它就像它根本不加载js文件..我在这里遗漏了一些明显的东西吗?

编辑:所以由于未定义我检查了源代码并且警报代码加载在头部但脚本在正文中,我如何在脚本加载后完成警报?

【问题讨论】:

    标签: javascript php wordpress plugins


    【解决方案1】:

    wp_enqueue_script() 不会立即将脚本输出到浏览器,它会将其排队并在模板中调用时呈现。

    但是,当您 echo 您的 &lt;script&gt; 标记时,它会立即输出它,因此,您的外部脚本甚至还没有发送到浏览器,更不用说加载了。

    为了演示,您可以将调用包装在window.onload

    echo "<script>window.onload = function(){ alertText('TEST'); };</script>";
    

    但是一个合适的解决方案,例如让你的脚本输出到模板中的某个地方,比如页脚:

    function do_inline_script(){
        echo "<script>alertText('TEST');</script>";
    }
    
    add_action( 'wp_footer', 'do_inline_script' );
    

    【讨论】:

    • 感谢您的回答!我现在明白了这个问题。但我对这种方法有疑问。除非满足上述条件,否则我不希望执行此操作。我只希望它在页面 is_single() 时执行。你知道如何实现这一目标吗?我可以简单地把 add_action 放在那里吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多