You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo15中如何在页面完全加载后执行JavaScript脚本

Odoo V15 条码界面JS脚本延迟执行解决方案

针对你遇到的脚本执行早于元素渲染、无法选中导航栏按钮的问题,可通过以下几种Odoo原生适配的方法解决:

1. 监听Odoo全局就绪事件

Odoo前端框架提供了web.ready全局事件,确保页面核心元素加载完成后再执行代码:

odoo.define('your_module.barcode_nav_handler', function (require) {
    "use strict";
    var core = require('web.core');

    core.bus.on('web.ready', null, function () {
        // 此时页面元素已初始化完成
        const targetBtn = $('.buttonClass');
        console.log(targetBtn);
        targetBtn.on('click', function() {
            // 写入你的按钮点击逻辑
        });
    });
});

2. 动态元素的事件委托

如果导航栏按钮是异步渲染的,即使等待web.ready也可能无法直接选中,此时用事件委托绑定到父容器(选一个始终存在的父元素):

odoo.define('your_module.barcode_nav_handler', function (require) {
    "use strict";
    var core = require('web.core');

    core.bus.on('web.ready', null, function () {
        // 替换为导航栏实际的父容器选择器,比如o_barcode_header
        $('.o_barcode_header').on('click', '.buttonClass', function() {
            // 写入你的按钮点击逻辑
        });
    });
});

3. 确认Assets配置的正确性

确保你的脚本加载顺序在条码模块核心资源之后,在manifest.py中配置:

'assets': {
    'barcode.assets': [  # 条码界面专属资源包,确保依赖加载完成
        'your_module/static/src/js/barcode_script.js',
    ],
},

如果是通用后端资源,也可使用web.assets_backend,但优先推荐绑定到条码模块的资源包,保证加载时机正确。

4. 自定义条码组件的生命周期钩子

如果你是扩展条码界面组件,可在组件的start方法中处理(组件渲染完成后触发):

odoo.define('your_module.custom_barcode_screen', function (require) {
    "use strict";
    var BarcodeScreen = require('barcode.BarcodeScreen');
    var core = require('web.core');

    var CustomBarcodeScreen = BarcodeScreen.extend({
        start: function () {
            this._super.apply(this, arguments);
            // 直接通过组件的$方法获取元素
            this.$('.buttonClass').on('click', function() {
                // 写入你的按钮点击逻辑
            });
            return this._super();
        },
    });

    core.ComponentRegistry.add('custom_barcode_screen', CustomBarcodeScreen);
    return CustomBarcodeScreen;
});

内容的提问来源于stack exchange,提问作者tlelubre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:12:48