我正在使用带有日期字段的自定义对象上的inputField在视觉力量页面上工作,看起来像这样:
<apex:page id="myVisualForcePage" showheader="false" controller="myController">
<apex:composition template="myTemplate">
<apex:define name="body">
<apex:outputpanel id="fullPage">
<div class="form-group">
!A bunch of other stuff!
<label class="col-xs-4">My Date</label>
<div class="col-xs-8">
<apex:inputfield id="myDate" styleClass="form-control" value="{!myControllerObject.MyCustomDateField__c}"/>
</div>
</div>
</apex:outputpanel>
</apex:define>
<apex:composition>
</apex:page>
由于某种原因,在调用 actionFunction 之前,日期选取器在页面加载时格式不正确。
这似乎是因为某些标准的 salesforce css 样式类在进行调用之前不会在页面加载时加载。
当页面加载时,我们可以看到 datePicker 没有与之关联的标准元素.css类,也没有指向样式类的链接:
日期选取器元素
日期选取器元素样式
标注前的 CSS 链接
在调用操作函数之后,我们可以在下面看到所有 salesforce 的标准 css 样式类都已加载,并且日期选择器现在具有来自 element 的样式元素.css该元素已加载:
新加载的 css 样式链接
日期选取器的新元素样式
如果有人有任何关于为什么会发生这种情况以及如何确保在页面加载时加载资源的信息,我将不胜感激!
作为更新,如果我显式加载以下资源资源,那么它将正常工作:
<link href="/sCSS/41.0/sprites/1516644206000/Theme3/default/gc/elements.css" type="text/css" class="user" rel="stylesheet"/>
但是,我不需要在其他页面上执行此操作,我想知道为什么?这可能是 API 的差异吗?
通过指定showHeader=false
,您声明不希望页面上有任何SF"开销",包括样式表。
检查<apex:page>
并考虑显式添加standardStylesheets="true"
...从理论上讲,这是一个默认值,但看起来你发现了一些有趣的行为(u)r。
standardStylesheets:一个布尔值,用于指定是否将标准 Salesforce 样式表添加到生成的页面页眉中 如果 showHeader 属性设置为 false。如果设置为 true,则 标准样式表将添加到生成的页眉中。如果不是 指定时,此值默认为 true。通过将其设置为 false, 需要 Salesforce.com CSS 的组件可能无法正确显示, 并且它们的样式可能会在版本之间发生变化。
对于遇到此问题的任何人,请尝试更改视觉力量页面的 API 版本。我发现 v39 工作正常,但我在 v41 和 v44 上有一个页面都有这个问题。