Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / 4.1.1/ie баг с преобразованием к escape в кнопках / 3 сообщений из 3, страница 1 из 1
12.09.2013, 17:51
    #38395105
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4.1.1/ie баг с преобразованием к escape в кнопках
Почему-то ни у кого нет этой ошибки на otn, что очень странно, но может кому-нибудь пригодится
в 4.1 этой ошибки не было, была другая, с двойным кодированием, в 4.1.1 только появилась, в 4.2.2 судя по всему уже исправили:

для кнопок, которые displayed in region position (action - redirect to url) стало применяться escape-кодирование к полю region URL Target,
но internet explorer 8/9 не понимает это кодирование, если там стоит javascript (например, javascript:apex.confirm('сообщение'); стала выводиться абракадабра

решение которое смог найти - перенести текст из поля в переменную (Function and Global Variable Declaration в page properties)


+ в кнопках, которые displayed among region items, если там стоит request с русскими символами - не работает (аналогично, генерируется код javascript:apex.submit('текст');, с текстом преобразованным в escape последовательность, который не правильно интерпретируется в ie, соответственно перестают работать все процессы, повешенные на это кнопку on submit )

ошибки нахожу запросом
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select t.workspace, t.application_id, t.application_name, t.page_id, t.page_name, 'region button' type,  t.BUTTON_NAME, t.redirect_url
from apex_application_page_buttons t
where regexp_instr( t.redirect_url, '[^][a-zA-Z0-9!@#$?!#$%^*(),&.:;<>~`''{}/\+=-_ 	'||chr(13)||chr(10)||']' ) > 0
  and t.workspace != 'INTERNAL'
  and instr(lower(t.redirect_url),'javascript')>0
union all
select t.workspace, t.application_id, t.application_name, t.page_id, t.page_name, 'item button' type,  t.BUTTON_NAME, t2.source
from apex_application_page_buttons t
   , apex_040100.wwv_flow_step_items t2
where regexp_instr( t2.source, '[^][a-zA-Z0-9!@#$?!#$%^*(),&.:;<>~`''{}/\+=-_ 	'||chr(13)||chr(10)||']' ) > 0
  and t.workspace != 'INTERNAL'
  and t.button_action_code = 'SUBMIT'
  and t.button_id = t2.id
...
Рейтинг: 0 / 0
16.09.2013, 15:22
    #38397812
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4.1.1/ie баг с преобразованием к escape в кнопках
еще один вариант решения - поменять шаблоны кнопок на onclick

старый:
Код: html
1.
<a href="#LINK#" class="t4Button" #BUTTON_ATTRIBUTES#>#LABEL#</a>


новый:
Код: html
1.
2.
3.
<button value="#LABEL#" onclick="#JAVASCRIPT#" class="t4Button" type="button" #BUTTON_ATTRIBUTES# id="#BUTTON_ID#">
  <span>#LABEL#</span>
</button>



пример запроса
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select t.workspace, t.application_id, t.application_name, t.page_id, t.page_name, 'region button' type,  t.BUTTON_NAME, t.redirect_url, t2.TEMPLATE_NAME, t2.TEMPLATE, t.image_name
from apex_application_page_buttons t
   , apex_application_temp_button t2
where regexp_instr( t.redirect_url, '[^][a-zA-Z0-9!@#$?!#$%^*(),&.:;<>~`''{}/\+=-_ 	'||chr(13)||chr(10)||']' ) > 0
  and t.workspace != 'INTERNAL'
  and instr(lower(t.redirect_url),'javascript')>0
  and t.button_template_id = t2.button_template_id
  and ( dbms_lob.instr(t2.TEMPLATE,'onclick')=0 )
union all
select t.workspace, t.application_id, t.application_name, t.page_id, t.page_name, 'item button' type,  t.BUTTON_NAME, t2.source, t3.TEMPLATE_NAME, t3.TEMPLATE, t.image_name
from apex_application_page_buttons t
   , apex_040100.wwv_flow_step_items t2
   , apex_application_temp_button t3
where regexp_instr( t2.source, '[^][a-zA-Z0-9!@#$?!#$%^*(),&.:;<>~`''{}/\+=-_ 	'||chr(13)||chr(10)||']' ) > 0
  and t.workspace != 'INTERNAL'
  and t.button_action_code = 'SUBMIT'
  and t.button_id = t2.id
  
  and t.button_template_id = t3.button_template_id(+)
  and ( dbms_lob.instr(t3.TEMPLATE,'onclick')=0 
     or t3.TEMPLATE is null and t.image_name is not null )



P.S. насчет 4.2.2 я погорячился, проверял на apex.oracle.com , но забыл, что там база utf8, там это задается теперь через Escaping Mode (Extended стоит по-умолчанию)

Use HTML Escaping Mode to define how Oracle Application Express escapes special
characters. Options include:
Basic: Escape &, ", < and >
Extended: Escape &, ", <, >, ', / and non-ASCII characters if the database
character set is not AL32UTF8
...
Рейтинг: 0 / 0
02.01.2014, 12:11
    #38516924
eeiiiuuyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4.1.1/ie баг с преобразованием к escape в кнопках
автордля кнопок, которые displayed in region position (action - redirect to url) стало применяться escape-кодирование к полю region URL Target,
но internet explorer 8/9 не понимает это кодирование, если там стоит javascript (например, javascript:apex.confirm('сообщение'); стала выводиться абракадабра

решение которое смог найти - перенести текст из поля в переменную (Function and Global Variable Declaration в page properties)

Спасибо, помогло!
Переехал с 3.1.2 11GR1 на 4.2.4 12сR1 - точно такая же проблема.
1. Выставил HTML Escaping Mode в Basic - не помогло
(правда помогло с BI Publisher в rtf c датами xx/yy/zzzz - накклонные перестали искейпиться)
2. поигрался с decodeURIComponent и decodeURI - не помогло
(может не там вставлял?)
3. В шаблоны лезть 'постеснялся', а вот Function and Global Variable Declaration - то, что доктор прописал!
Успехов!
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / 4.1.1/ie баг с преобразованием к escape в кнопках / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]