Регистрация  |  Вход

Поговорим про засаду которая нас ждет с 11/09/2015. Или о Critical Update - Serve Static Resources from the Visualforce Domain

Что в этом плохого ?

Финт ушами и манипуляция с URL теперь не будут прокатывать и доступ из iframe в родительскую страницу не будет работать.

На первый взгляд остается только postMessage(). Но этот вариант требует наличия eventlistener в родительской странице, что не всегда реализуемо.

У кого еще какие есть мнения на этот счат ?

Что в этом плохого ? 

Финт ушами и манипуляция с URL теперь не будут прокатывать и доступ из iframe в родительскую страницу не будет работать.

На первый взгляд остается только postMessage(). Но этот вариант требует наличия eventlistener в родительской странице, что не всегда реализуемо.

У кого еще какие есть мнения на этот счат ?

То есть даже на JS не прокатит?

То есть даже на JS не прокатит? 

А можно ссылку на подробную информацию об апдейте?

А можно ссылку на подробную информацию об апдейте?

Dmitry Shnyrev
А можно ссылку на подробную информацию об апдейте?

Зайти в Critical updates и там будет дата принудительной активации и там нажми Review.

[quote="Dmitry Shnyrev"]А можно ссылку на подробную информацию об апдейте?[/quote]

Зайти в Critical updates и там будет дата принудительной активации и там нажми Review.

И продолжение темы.

У меня например со страницы которая запущена из iframe нет доступа ни к одному REST ресурсу, так же не работает connection.js, так же не работает /servlet/servlet.FileDownload?file=ID через AJAX

у всех так же ?

И продолжение темы.

У меня например со страницы которая запущена из 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.

На счет описанных тобой проблем, обязательно попробую как появится свободная минута.

Блин, давно не связывался со стандартными layouts. Поэтому не сразу понял в чем засада.
А реально то засада! Твои решения на базе JS через static recources реально отвалятся. Хорошо что в текущем проекте руководство отказалось от стандартного интерфейса (функционала) SF, поэтому мимо нас апдейт прошел незаметно. 
На счет iframes. Я не могу протестить, под рукой ничего нет подходящего, но отказался от них уже давно. Проект это пакет и поэтому очень сильно все против global, а remote actions из iframe c модификатором public не работает. Поэтому давно перешел на apex:include. Хотя долго приходилось мучиться с конфликтами имен переменных в JS.

На счет описанных тобой проблем, обязательно попробую как появится  свободная минута.

можете простыми словами сказать, что там за проблема.

то, что главное окно не сможет сноситься с фреймом - это я понял, а причина то в чем

можете простыми словами сказать, что там за проблема.

то, что главное окно не сможет сноситься с фреймом - это я понял, а причина то в чем

Den Brown
можете простыми словами сказать, что там за проблема.

то, что главное окно не сможет сноситься с фреймом - это я понял, а причина то в чем

Причина в том что будет запрещено загружать что либо из домена отличного от домена текущей страницы. Это касается статик ресурсов рест сервисов и так далее.

[quote="Den Brown"]можете простыми словами сказать, что там за проблема.

то, что главное окно не сможет сноситься с фреймом - это я понял, а причина то в чем[/quote]

Причина в том что будет запрещено загружать что либо из домена отличного от домена текущей страницы. Это касается статик ресурсов рест сервисов и так далее.

/resource/image.png в формулах тоже, наверно, отвалится?

/resource/image.png в формулах тоже, наверно, отвалится?

Если указан относительный урл то не отвалиться.

Если указан относительный урл то не отвалиться.

wilder
Если указан относительный урл то не отвалиться.

Теперь же ресурсы будут храниться на другом домене разве относительный урл сработает?

[quote="wilder"]Если указан относительный урл то не отвалиться.[/quote]
Теперь же ресурсы будут храниться на другом домене разве относительный урл сработает?

Gres
wilder
Если указан относительный урл то не отвалиться.

Теперь же ресурсы будут храниться на другом домене разве относительный урл сработает?

Нет, ресурсы будут храниться все там же.

Допустим у тебя был ресурс 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 получишь ошибку. А раньше прокатывало и на этом собственно и было все построено.

[quote="Gres"][quote="wilder"]Если указан относительный урл то не отвалиться.[/quote]
Теперь же ресурсы будут храниться на другом домене разве относительный урл сработает?[/quote]

Нет, ресурсы будут храниться все там же. 

Допустим у тебя был ресурс test

У тебя есть основная страница по адресу [b]https://eu5.salesforce.com[/b]. В этом случае твой ресурс возьмется с адреса [b]https://eu5.salesforce.com/resource/test[/b].

Есть iframe по адресу https://eu5.c.visual.force.com. В этом случае твой ресурс возьмется с адреса [b]https://eu5.c.visual.force.com/resource/test[/b].

А вот если ты с iframe захочешь обратиться к [b]https://eu5.salesforce.com/resource/test[/b] получишь ошибку. А раньше прокатывало и на этом собственно и было все построено.

> With this update, all static resources are loaded from the Visualforce Domain.
Из текста обновления

> With this update, all static resources are loaded from the Visualforce Domain. 
Из текста обновления

Что-то они перемудрили с этой хренью. Если включить в CORS субдомен, то все работает как и раньше.
Проблема в том, что CORS почему-то у меня срабатывает, только через сутки.

Что-то они перемудрили с этой хренью. Если включить в CORS субдомен, то все работает как и раньше. 
Проблема в том, что CORS почему-то у меня срабатывает, только через сутки.

Была кастомизация с инъекцией JS в кастом линк - сегодня отвалилась. Никаких сообщений об ошибках, ничего, просто не работает. Это оно, да? Конец настал?

Была кастомизация с инъекцией JS в кастом линк -  сегодня отвалилась. Никаких сообщений об ошибках, ничего, просто не работает. Это оно, да? Конец настал?

Tellen
Это оно, да? Конец настал?

Если можно скинь код. Станет ясней.

[quote="Tellen"]Это оно, да? Конец настал?[/quote]

Если можно скинь код. Станет ясней.

Ну вот, был кастом линк в сайдбарном компоненте

{!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');
}
});
});

Ну вот, был кастом линк в сайдбарном компоненте

{!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
[code]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');
		}
   });
});[/code]

Tellen
В пятницу работало, сегодня уже нет.

Вот это другая засада, но тоже очень не приятная....

[quote="Tellen"]В пятницу работало, сегодня уже нет.[/quote]

[url=http://releasenotes.docs.salesforce.com/en-us/winter16/release-notes/rn_forcecom_general_requirescript.htm]Вот[/url] это другая засада, но тоже очень не приятная....