我有一个VF页面(下面的代码),该页面具有一个自定义按钮,该按钮将捕获字段的值并给出一个下载弹出窗口,以将该值保存到文件中。这可以在visualforce中顺利运行。 在Classic中,看起来像这样https://sfuser-dev-developer-edition.na50.force.com/apex/Weather_View?id=a0A6A000009XV2k&sfdc.override=1 但是,一旦我们迁移到Lightning,该按钮将弹出一个怪异的弹出窗口(附带的屏幕截图),下载文件和格式也随之更改(文件名仅是下载文件,无法识别所提供的格式)。有什么办法可以解决此问题?我们不会很快迁移到Lightning组件,因此我们将不得不忍受一段时间在Lightning中渲染的VF页面。
我尝试调整JS中的href属性,但看起来没有帮助。
<apex:page standardController="Weather__c" showHeader="false" sidebar="false">
<apex:pageMessages />
<apex:form>
<apex:pageBlock mode="maindetail" title="Weather Details">
<apex:pageBlockSection columns="2">
<apex:outputField value="{!Weather__c.Name}" />
<apex:outputField value="{!Weather__c.OwnerId}" />
<apex:outputField value="{!Weather__c.City__c}" />
<apex:outputField value="{!Weather__c.TempInFahrenheit__c }" />
<apex:pageBlockSectionItem >
<apex:outputLabel for="forecastid" value="Forecast Details"/>
<apex:outputField id="forecastid" value="{!Weather__c.Forecast_Details__c }"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem ></apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputPanel style="padding-left: 45%">
<apex:commandButton value="Download Forecast Details" oncomplete="downloadVal('Forecast_Details' + '.txt', 'false')" />
</apex:outputPanel>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
<script type="text/javascript">
function downloadVal(filename, addText) {
var data = '{!Weather__c.Forecast_Details__c}';
var bundleData = data;
try {
if(addText == 'true') {
newText = 'Adding some more text';
bundleData = data + '\n' + newText;
}
var element = document.createElement('a');
element.setAttribute('href', 'data:application/text;charset=utf-8,' + encodeURIComponent(bundleData));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
} catch(e) {
alert(e);
}
}
</script>
</apex:page>