Javascript 如何定制OpenERP6.1WebClient HTML DOM?

Javascript 如何定制OpenERP6.1WebClient HTML DOM?,javascript,jquery,css,dom,openerp,Javascript,Jquery,Css,Dom,Openerp,OpenERP web客户端的页面在列表视图中有许多列,因此可以非常宽。在短屏幕上,这是一个问题,因为居中的菜单超出了内容右侧的范围。我决定找到一个快速解决方法:使菜单向左对齐。对于普通的网站来说,使用标准JQuery是小菜一碟,但是这个OpenerpWeb东西几乎完全是用JS生成的 生成的HTML具有以下菜单结构: 使用JQuery的方法是(在JS控制台中测试): $('div.menu table[align=center]).attr('align','left'); 虽然通常会失败

OpenERP web客户端的页面在列表视图中有许多列,因此可以非常宽。在短屏幕上,这是一个问题,因为居中的菜单超出了内容右侧的范围。我决定找到一个快速解决方法:使菜单向左对齐。对于普通的网站来说,使用标准JQuery是小菜一碟,但是这个OpenerpWeb东西几乎完全是用JS生成的

生成的HTML具有以下菜单结构:


使用JQuery的方法是(在JS控制台中测试):

$('div.menu table[align=center]).attr('align','left');
虽然通常会失败,因为加载DOM的时间只是OpenERP web客户端的初始化


我的要求是,这需要从一个模块进行管理。Simahawk得到了一个类似主题的答案——这为我指明了正确的方向,但并没有解决我的任务。

我从web_livechat模块中找到并修改了一段代码,最终成功。调用My module非常重要,因为openerp对象的新方法必须在您的模块-static/src/js/tweaks.js之后调用:

//openerp.camara(openerp)在加载模块时执行-UI尚未呈现!
openerp.camara=函数(openerp){
//因此,我们钩住(覆盖)头do_update()调用
//在WebClient进行会话验证时执行
//我们必须调用重写的父方法
//然后,我们就抓住了更新的承诺
//它在更新完成后执行我们的代码。
openerp.web.Header.include({
do_更新:函数(){
var self=这个;
这个;
this.update_promise.then(function()){
//将菜单对齐方式更改为左侧
//因为视野很宽,它够不着
$('div.menu table[align=center]').attr('align','left'))
});
}
});
}
js文件需要包含在\uuu openerp\uuu.py中:

'js':[“static/src/js/tweaks.js”]
剩余问题:

  • 您是否喜欢这种方法,并认为它是一种合适的方法
  • 如果没有,请提供其他解决方案

我自己觉得这相当笨拙,这就是为什么我问。我曾想过使用CSS,但没有覆盖表的align属性。

是的,这是正确的。考虑一下这里的官方文档,你可能会发现这是有用的,谢谢Simahawk,我看到了你的文章,很好的工作。