У меня есть страница VF (код ниже), в которой есть настраиваемая кнопка, которая захватывает значение поля и выдает всплывающее окно загрузки для сохранения в файл этого значения. Это работает гладко в visualforce.
В Classic это выглядит примерно так: https://sfuser -dev-developer-edition.na50.force.com / apex / Weather_View? Id = a0A6A000009XV2k & sfdc.override = 1
Однако, как только мы перешли на Lightning, кнопка выдает странное всплывающее окно (прикрепленный снимок экрана), и загружаемый файл и формат изменяются (имя файла просто загружается, и оно не идентифицирует предоставленный формат). Есть ли способ, как я могу решить эту проблему? В ближайшее время мы не перейдем на компоненты Lightning, поэтому нам придется некоторое время жить с этой страницей VF, отображаемой в Lightning.
Я пытался настроить атрибут href в JS, но, похоже, это не помогло.
<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>
Изображение ошибки опыта молнии