使用 Symfony 和 Twig 从 href 中的外部 JavaScript 文件调用函数

Call a function from an external JavaScript file in href with Symfony and Twig

我正在尝试使用 Symfony 和 Twig 从 href 中的外部 JavaScript 文件调用函数。

这是我的 JavaScript 文件 pm.js :

function test(id) {
    alert(id);
}

这是我的模板:

{# templates/pm/pm.html.twig #}
{% extends 'base.html.twig' %}

{% block title %}{{ parent() }} | Private messaging{% endblock %}

{% block body %}
    (...)
    <a href="javascript:test({{ message.id }});">test</a>
    (...)
{% endblock %}

{% block javascripts %}
    {{ parent() }}
    <script src="{{ asset('build/js/pm.js') }}"></script>
{% endblock %}

我该怎么做?感谢您的帮助。

发生这种情况是因为您使用的是已编译的 pm.js javascript 文件(我猜这就是它位于 build/js 中的原因)。如果你只是将 pm.js 放在你的 public js 文件夹中而不编译它,你的代码将可以正常工作。

你的问题是你编译后的函数不是全局函数。您可以通过多种方式解决这个问题,其中最简单的是:

window.test = function test(id) {
    alert(id);
}

只需将函数 test() 分配给 window 变量 window.test 即可。