Что в этом плохого ?
Финт ушами и манипуляция с URL теперь не будут прокатывать и доступ из iframe в родительскую страницу не будет работать.
На первый взгляд остается только postMessage(). Но этот вариант требует наличия eventlistener в родительской странице, что не всегда реализуемо.
У кого еще какие есть мнения на этот счат ?
То есть даже на JS не прокатит?
А можно ссылку на подробную информацию об апдейте?
Зайти в Critical updates и там будет дата принудительной активации и там нажми Review.
И продолжение темы.
У меня например со страницы которая запущена из iframe нет доступа ни к одному REST ресурсу, так же не работает connection.js, так же не работает /servlet/servlet.FileDownload?file=ID через AJAX
у всех так же ?
Блин, давно не связывался со стандартными layouts. Поэтому не сразу понял в чем засада.
А реально то засада! Твои решения на базе JS через static recources реально отвалятся. Хорошо что в текущем проекте руководство отказалось от стандартного интерфейса (функционала) SF, поэтому мимо нас апдейт прошел незаметно.
На счет iframes. Я не могу протестить, под рукой ничего нет подходящего, но отказался от них уже давно. Проект это пакет и поэтому очень сильно все против global, а remote actions из iframe c модификатором public не работает. Поэтому давно перешел на apex:include. Хотя долго приходилось мучиться с конфликтами имен переменных в JS.
На счет описанных тобой проблем, обязательно попробую как появится свободная минута.
можете простыми словами сказать, что там за проблема.
то, что главное окно не сможет сноситься с фреймом - это я понял, а причина то в чем
то, что главное окно не сможет сноситься с фреймом - это я понял, а причина то в чем
Причина в том что будет запрещено загружать что либо из домена отличного от домена текущей страницы. Это касается статик ресурсов рест сервисов и так далее.
/resource/image.png в формулах тоже, наверно, отвалится?
Если указан относительный урл то не отвалиться.
Теперь же ресурсы будут храниться на другом домене разве относительный урл сработает?
Нет, ресурсы будут храниться все там же.
Допустим у тебя был ресурс test
У тебя есть основная страница по адресу https://eu5.salesforce.com. В этом случае твой ресурс возьмется с адреса https://eu5.salesforce.com/resource/test.
Есть iframe по адресу https://eu5.c.visual.force.com. В этом случае твой ресурс возьмется с адреса https://eu5.c.visual.force.com/resource/test.
А вот если ты с iframe захочешь обратиться к https://eu5.salesforce.com/resource/test получишь ошибку. А раньше прокатывало и на этом собственно и было все построено.
> With this update, all static resources are loaded from the Visualforce Domain.
Из текста обновления
Что-то они перемудрили с этой хренью. Если включить в CORS субдомен, то все работает как и раньше.
Проблема в том, что CORS почему-то у меня срабатывает, только через сутки.
Была кастомизация с инъекцией JS в кастом линк - сегодня отвалилась. Никаких сообщений об ошибках, ничего, просто не работает. Это оно, да? Конец настал?
Если можно скинь код. Станет ясней.
Ну вот, был кастом линк в сайдбарном компоненте
{!REQUIRESCRIPT("https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js")}
{!REQUIRESCRIPT("https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.js")}
{!REQUIRESCRIPT("/soap/ajax/34.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/34.0/apex.js")}
{!REQUIRESCRIPT('data:application/javascript;base64,<код, который грузил css и через JQuery скрывал сам компонент>
{!REQUIRESCRIPT(<полный путь к статик ресурсу без метки времени>)}
В пятницу работало, сегодня уже нет.
собсно код в base 64
var j$ = jQuery.noConflict();
j$(document).ready(function(){
var html_doc = document.getElementsByTagName('head')[0];
var cssCode =document.createElement('link');
cssCode.setAttribute('rel','stylesheet');
cssCode.setAttribute('href','//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css');
html_doc.appendChild(cssCode);
var template = j$( "<div>", { id: "dialog", html:""});
j$('body').append(template);
var linkBlocks = j$(".linksModule");
j$.each(linkBlocks, function (key, value){
if(j$(value).find(j$(".brandPrimaryFgr")).text() === 'WPhLinks'){
j$(value).css('display','none');
}
});
});
Вот это другая засада, но тоже очень не приятная....