javascript 在Express和Pug中,如何向onclick按钮发送函数?

pdkcd3nj  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(133)

我正在尝试发送一个可以分配给按钮元素的onclick的函数。
在我的一个页面上,我尝试将一个名为showPopup的函数作为局部变量发送,然后将其赋值给一个按钮onclick。
serverController.js

exports.get_server = (req, res, next) => {
    Server.findById(req.params.id).populate("channels").exec((err, server) => {
        if(err) next(err);

        let showPopup = () => {
            let c = document.querySelector("form.container-popup#add-channel");
            c.hidden = false;
        }

        res.render("server-page", {
            server: server, 
            user: res.locals.currentUser,
            showPopup: showPopup
        })
    })
};

channel-side-bar.pug

div.secondary-side-bar
    div This is the channel side bar
    for channel in server.channels
        a(href=`/server/${server._id}/channel/${channel._id}`) #{channel.name}
        br
    button.add-channel(type="button" onclick=showPopup) Add Channel

    //- - showPopup() <-- runs my function when program runs

    form.container-popup#add-channel(method="POST" action=createChannelURL hidden=true)
        .div Create Channel
        label(for="name") Channel Name
        input(type="text" name="name" placeholder="Enter channel name here...")
        label(for="private") Private Channel?
        input(type="checkbox" value="private" name="private")

        button(type="submit") Submit
        
script.
    //- let addChannelButton = document.querySelector("button.add-channel")
    //- addChannelButton.onclick = showPopup;
    console.log("in pug script")

当我运行代码时,我收到一个错误消息:
拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:"script-src-attr 'none'"。启用内联执行需要" unsafe-inline "关键字、哈希(" sha256-...")或随机数(" nonce-...")。请注意,哈希不适用于事件处理程序、样式属性和JavaScript:导航,除非存在"unsafe-hashes"关键字。
为了记录在案,我还引用了这样的话:

onclick="showPopup" 
onclick="showPopup()"

我哪里做错了?
我也尝试过直接在pug页面脚本中添加onclick函数,但似乎也无法运行。

相关问题