class 正在从 div 中删除
class is being removed from a div
OpenERP 网络界面严重依赖 javascript、QWeb、jQuery(我认为)和 css。
默认视图的顶部有一个黑色菜单栏,左侧有一个侧面菜单栏,屏幕的其余部分用于显示所提供的内容。
我试图 "fix" 的问题是它显示为一个大页面,这意味着如果您滚动页面,顶部菜单和侧面菜单也会滚动。
我有一个几乎可行的解决方案:
- 调整顶部菜单栏修复
- 调整侧面菜单栏以修复
- 调整余数占满剩余space
为了做到这一点,我还必须添加一个新的 css class,我称之为 oe_main_window
,并找到设置视图的代码以添加 oe_main_window
到 div
与 class oe_view_manager_current
.
这适用于主要视图。
但是,如果我在主视图中单击 link,比如显示产品,它会删除 oe_main_window
class 并弄乱显示。如果我进入开发人员工具并添加 oe_main_window
,显示再次正确。
我已经尝试搜索发生这种情况的位置,但到目前为止未能找到适当的代码来不删除新的 class 或在转换后将其添加回来。
有什么想法吗?
您可以在此处找到如何在 DOM 突变上放置断点:
https://developer.chrome.com/devtools/docs/javascript-debugging#breakpoints-mutation-events
主要是使用 F12 打开 chrome 开发工具,右键单击 div 然后单击 "Break on...>> Attributes modifications"
针对第一个 oe_view_manager
找到的问题的最终解决方案。这是(笨拙的)JavaScript:
function addOeMainWindow() {
var newChildren = [];
var currentChild, getAttr, oldClass, newClass;
var i;
for (i=0; i<document.childNodes.length; i+=1) {
newChildren.push(document.childNodes[i]);
}
while (newChildren.length > 0) {
currentChild = newChildren.shift();
getAttr = currentChild.getAttribute;
if (getAttr !== undefined) {
oldClass = currentChild.getAttribute("class");
if (/oe_view_manager/.test(oldClass) && !/oe_main_window/.test(oldClass)) {
newClass = oldClass + " oe_main_window";
currentChild.setAttribute("class", newClass);
return;
}
}
for (i=0; i<currentChild.childNodes.length; i+=1) {
newChildren.push(currentChild.childNodes[i]);
}
}
return;
}
OpenERP 网络界面严重依赖 javascript、QWeb、jQuery(我认为)和 css。
默认视图的顶部有一个黑色菜单栏,左侧有一个侧面菜单栏,屏幕的其余部分用于显示所提供的内容。
我试图 "fix" 的问题是它显示为一个大页面,这意味着如果您滚动页面,顶部菜单和侧面菜单也会滚动。
我有一个几乎可行的解决方案:
- 调整顶部菜单栏修复
- 调整侧面菜单栏以修复
- 调整余数占满剩余space
为了做到这一点,我还必须添加一个新的 css class,我称之为 oe_main_window
,并找到设置视图的代码以添加 oe_main_window
到 div
与 class oe_view_manager_current
.
这适用于主要视图。
但是,如果我在主视图中单击 link,比如显示产品,它会删除 oe_main_window
class 并弄乱显示。如果我进入开发人员工具并添加 oe_main_window
,显示再次正确。
我已经尝试搜索发生这种情况的位置,但到目前为止未能找到适当的代码来不删除新的 class 或在转换后将其添加回来。
有什么想法吗?
您可以在此处找到如何在 DOM 突变上放置断点: https://developer.chrome.com/devtools/docs/javascript-debugging#breakpoints-mutation-events
主要是使用 F12 打开 chrome 开发工具,右键单击 div 然后单击 "Break on...>> Attributes modifications"
针对第一个 oe_view_manager
找到的问题的最终解决方案。这是(笨拙的)JavaScript:
function addOeMainWindow() {
var newChildren = [];
var currentChild, getAttr, oldClass, newClass;
var i;
for (i=0; i<document.childNodes.length; i+=1) {
newChildren.push(document.childNodes[i]);
}
while (newChildren.length > 0) {
currentChild = newChildren.shift();
getAttr = currentChild.getAttribute;
if (getAttr !== undefined) {
oldClass = currentChild.getAttribute("class");
if (/oe_view_manager/.test(oldClass) && !/oe_main_window/.test(oldClass)) {
newClass = oldClass + " oe_main_window";
currentChild.setAttribute("class", newClass);
return;
}
}
for (i=0; i<currentChild.childNodes.length; i+=1) {
newChildren.push(currentChild.childNodes[i]);
}
}
return;
}