Здравствуйте, c-smile, Вы писали:
Z>>3. Отключаю "волшебный" скроллинг через SciterAppendMasterCSS "html { overflow:auto scroll-manner( page-animation:false, step-animation:false, home-animation: false, wheel-animation:false ) }" — в окне жму клавишу End включается плавный скроллинг, к томуже еще не в низ, а вверх кудато... CS>Посмотрю.
Ковыряясь в api обнаружил HTMLayoutSetOption и параметр HTMLAYOUT_SMOOTH_SCROLL, надоже, как я его пропустил, проверил — то что надо, работает!
Смотрю в sciter api это есть, думаю сейчас решу эту проблему. Делаю ::SciterSetOption( GetSafeHwnd(), SCITER_SMOOTH_SCROLL, FALSE ) — возвращает 1, но всё равно плавный скролл...
Здравствуйте, c-smile, Вы писали:
CS>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Загружаю html, страница длинная, зажимаю мышкой скролл бар и тяну вниз — вылетает
<td> element is not allowed at ((244))
First-chance exception in proga.exe (SCITER32.DLL): 0xC0000005: Access Violation.
Здравствуйте, zitz, Вы писали:
Z>Зачем такие сложности? Уж если корячить html, то можно SciterSetElementHtml сделать... Z>Я же не против перестроить свою корявую ментальную модель, но чтобы сделать себе эти API нужно уж очень хитро извратится: сделать html по умолчанию, в нем фрейм, в этот фрейм грузить css извне, содержимое извне... Это при том что у меня уже всё работает как надо на HTMLayout и я уже и так не кислый рефакторинг провел. Z>Ведь с CSS же всё просто — есть SciterSetCSS и SciterAppendMasterCSS, крути-верти как хочешь без особых плясок с бубном.
Z>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
Зачем SciterSetScript если есть SciterEval ?
Этой функцией можно script непосредственно исполнить, а можно
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
Z>>>1. SciterLoadFile возвращает FALSE Z>>>HTMLayoutLoadFile в аналогичной ситуации работает Z>>>Как узнать что ему не нравится? Z>>>Этот же файл открываю через sciter.exe — открывается без вопросов... Z>>>Эта функция просто отказывается работать чтобы я туда не подставлял. Z>>>
CS>>Это внешинй URL? http://... и т.д.
Z>Нет, эту путь к файлу на диске. Z>Пробовал разные варианты — думал может путь длинный, думал может русские символы, разные файлы пробовал с разным содержимым, все равно 0 возвращает.
FALSE возвращается если
1. hwnd не sciter
2. url не local и sciter загрузит его позже.
3. Если SC_LOAD_DATA вернул LOAD_DISCARD — т.е. запретил загрузку.
Z>>>2. Sciter перестал понимать bgcolor у table, tr и td. На HTMLayout такой проблемы нет. CS>>В HTML5 таких атрибутов уже нет. Могу конечно приделать но позже.
Z>Было бы замечательно. Z>Либо пример как сделать так: >> Например в script можно добавить поддержу bgcolor и вообще много чего на эту тему. Z>Я бы тогда еще поддержку align добавил
function SetBGColor() {
this.style["background-color"] = this.attributes["bgcolor"];
}
Z>>>4. Отключаю фон не загрузившихся картинок, делаю SciterAppendMasterCSS...
Z>Понял в чем проблема — не работает SciterAppendMasterCSS, хотя при вызове возвращает 1... Z>Передал всё на SciterSetCSS, заработало
SciterAppendMasterCSS работает, в sciter.exe так добавляется "<checkbox>":
Z>>>3. Отключаю "волшебный" скроллинг через SciterAppendMasterCSS...
Z>Проблема в следующем — отключение анимации не дружит с body{ behavior:htmlarea; } — при движении курсора все равно пытается плавно прокручивать. Z>Также не работают клавиши промотки вверх-вниз-home-end — он пытается ими двигать курсор. Мне двигать курсор не требуется, но требуется выделять мышью — можно как-то отключить движение курсора по клавишам стандартным способом? Или придется перехватывать?
Я починил animation setup для caret movement, в след. билде будет.
caret будет двигаться в htmlarea всегда иначе например Shift+Left/Right выделение работать не будет.
Z>>>5. Сразу поле делаю SciterLoadHtml RedrawWindow и вызываю SciterSetScrollPos — внутри html таблица растягивается по ширине и скролл налезает на контент. На HTMLayout такого нет. CS>>Ни разу не видел, надо HTML на посмотреть.
Z>Пожалуйста: Z>
Z><HTML>
Z></HTML>
Z>
Z>Свою проблему решил так — после SciterLoadHtml принудительно отправляю окну WM_SIZE после этого отображается нормально
Это уже предмет для разговора...
Напиши там
html { overflow:hidden; }
body { overflow:scroll-indicator; size:*; }
// or body { overflow:auto; size:*; }
Z>Кстати если этот html открыть в sciter.exe, то при уменьшении размера окна вообще два скролла появится
Это нормально. Корневой документ там сознательно был оставлен с overflow:auto;
Z>>>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл. Z>>>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет. CS>>Ни разу не видел, надо HTML на посмотреть.
Z>Пожалуйста: Z>
Z><HTML>...
Z></HTML>
Z>
Z>Эту странность не получается побороть...
Забудь про проценты от размера view — они имеют другую семантику в desktop приложениях.
Здравствуйте, zitz, Вы писали:
Z>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
Про SciterEval я уже сказал выше но на самом деле тебе и это не надо.
Скажем если тебе нужно выполнить некую функцию для DOM элемента то пишем скрипт
utils.tis :
function Foo() {
this// here is the element
}
и вызываем эту скрипт функцию через CSS:
div[foo] {
aspect: Foo url(utils.tis);
}
для всех <div> у которых есть атрибут foo.
Можно также зайти с другой стороны:
в CSS:
html {
aspect: MyHtmlProcessor url(utils.tis);
}
объявлено что для <html> документа будет вызвана функция MyHtmlProcessor которая выглядит например так
function MyHtmlProcessor() {
for( var el in this.selectAll("div[foo]") )
// do something with each div[foo]
}
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
CS>>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Z>Загружаю html, страница длинная, зажимаю мышкой скролл бар и тяну вниз — вылетает Z><td> element is not allowed at ((244)) Z>First-chance exception in proga.exe (SCITER32.DLL): 0xC0000005: Access Violation.
Z>В sciter.exe эта бага не повторяется...
Бага случается из-за того что я после загрузки SciterLoadHtml делаю SciterSetCSS
img:busy { background-image:none; background-color:transparent; min-width:1x; min-height:1px; border:0px; border-color:transparent; }
img:not(:busy):incomplete { background-image:none; background-color:transparent; min-width:1px; min-height:1px; border:0px; border-color:transparent; }
Убираю эти два стиля — падения прекращаются
Здравствуйте, c-smile, Вы писали:
Z>>>>1. SciterLoadFile возвращает FALSE CS>FALSE возвращается если CS>1. hwnd не sciter CS>2. url не local и sciter загрузит его позже. CS>3. Если SC_LOAD_DATA вернул LOAD_DISCARD — т.е. запретил загрузку.
"SC_LOAD_DATA вернул LOAD_DISCARD" — ВАХ! Кто бы мог подумать — у меня обработчик стоит который режет всё кроме некоторых картинок и file:
А зачем так сделано? Если я делаю вызов SciterLoadFile разве это не значит что я хочу его загрузить?
uri файла приходит с замененными слешами на бекслеши — зачем? Причем ладно бы кодировал url символы и подставлял file:/// — так нет же, меняет только слеши...
Чтобы разрешить загрузку надо сделать sLoadedPath.Replace( _T("\\"), _T("/") ) и сравнить или он ещё какие символы по партизански портит?
Ну да ладно — это пол беды, самая главная проблема — не устанавливается baseUrl каталог с файлом — картинки которые лежат в том же каталоге не грузятся
Я тут параллельно уже накидал код который сам файл открывает, считывает и делает SciterLoadHtml.
Думал слеши на обратные поменяю в пути, да и всё раз уж он такой путь в SC_LOAD_DATA кидает, значит понимает... Ан нет...
Что за двойные стандарты Таки придется urlEncode писать...
Z>>>>5. Сразу поле делаю SciterLoadHtml RedrawWindow и вызываю SciterSetScrollPos — внутри html таблица растягивается по ширине и скролл налезает на контент. На HTMLayout такого нет. CS>>>Ни разу не видел, надо HTML на посмотреть. Z>>Пожалуйста: Z>>
Z>><HTML>
Z>></HTML>
Z>>
Z>>Свою проблему решил так — после SciterLoadHtml принудительно отправляю окну WM_SIZE после этого отображается нормально CS>Это уже предмет для разговора... CS>Напиши там CS>
CS>html { overflow:hidden; }
CS>body { overflow:scroll-indicator; size:*; }
CS>// or body { overflow:auto; size:*; }
CS>
В этом случае скрол всегда поверх текста отображается и WM_SIZE не спасает
Z>>>>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл. Z>>>>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет. CS>>>Ни разу не видел, надо HTML на посмотреть. Z>>Пожалуйста: Z>>
Z>><HTML>...
Z>></HTML>
Z>>
Z>>Эту странность не получается побороть... CS>Забудь про проценты от размера view — они имеют другую семантику в desktop приложениях. CS>Попробуй вот: CS>Про margin: *; я рассказал в...
Проблема в том что margin: * не работает в HTMLayout — выравнивает только по горизонтали.
В Sciter этот margin: * работает как надо и эффект с исчезанием картинки пропал...
Можно как-то по другому решить этот вопрос, чтобы работало и там и там?
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, zitz, Вы писали:
Z>>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
CS>Про SciterEval я уже сказал выше но на самом деле тебе и это не надо.
Я не совсем понимаю... Можно скрипт в css запихнуть?
Или ты предлагаешь делать мне внешний файл и его скармлевать в Sciter через SciterEval?
Можно как то обойтись без создания файла и без нахлобучек ввиде фреймов? Требуется генерировать скрипт программно и сразу пихать его в Sciter?
Например, есть SciterSetCSS — удобно, практично, прекрасно! Я могу сгенерировать стиль и сразу его применить, хочешь так крути, хочешь сяк... В одном случае то, во втором это, в третьем по другому. Можно на лету менять. Не надо ничего никуда сохранять во внешние файлы — красота. В этом случае тоже можно же сказать — это API убираем, пусть все грузят через include...
Если будет SciterSetScript то он даст такуюже свободу, тем более что с помощью скриптов можно расширить API которые не хочет возвращать разработчик
Здравствуйте, zitz, Вы писали: Z>"SC_LOAD_DATA вернул LOAD_DISCARD" — ВАХ! Кто бы мог подумать — у меня обработчик стоит который режет всё кроме некоторых картинок и file: Z>А зачем так сделано? Если я делаю вызов SciterLoadFile разве это не значит что я хочу его загрузить? Z>uri файла приходит с замененными слешами на бекслеши — зачем? Причем ладно бы кодировал url символы и подставлял file:/// — так нет же, меняет только слеши... Z>Чтобы разрешить загрузку надо сделать sLoadedPath.Replace( _T("\\"), _T("/") ) и сравнить или он ещё какие символы по партизански портит? Z>Ну да ладно — это пол беды, самая главная проблема — не устанавливается baseUrl каталог с файлом — картинки которые лежат в том же каталоге не грузятся
Вообще-то SciterLoadFile() ожидает url.
Т.е. в случае файлов это что-то типа file://c:/.....
Если дашт URL — получишь URL в callback.
"А зачем так сделано?"
Были неоднократные запросы на тему "хотим чтобы весь трафик шел через SC_LOAD_DATA" для того чтобы
имплементирвать свой loader в одном месте. Посчитал что это разумно.
Z>Я тут параллельно уже накидал код который сам файл открывает, считывает и делает SciterLoadHtml. Z>Думал слеши на обратные поменяю в пути, да и всё раз уж он такой путь в SC_LOAD_DATA кидает, значит понимает... Ан нет... Z>Что за двойные стандарты Таки придется urlEncode писать...
Давай URL по всем правилам и будет тебе шастя. Z>В этом случае скрол всегда поверх текста отображается и WM_SIZE не спасает
У тебя было table { width:100% } что engine и исполнял — 100% от ширины окна. Но без scrollbars.
Т.е. либо надо флексы использовать либо overflow-y:scroll, а не overflow-y:auto как у тебя.
Либо вообще overflow:scroll-indicator — он места не занимает. Z>>>>>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл. Z>>>>>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет. CS>>>>Ни разу не видел, надо HTML на посмотреть. Z>>>Пожалуйста: Z>>>
Z>>><HTML>...
Z>>></HTML>
Z>>>
Z>>>Эту странность не получается побороть... CS>>Забудь про проценты от размера view — они имеют другую семантику в desktop приложениях. CS>>Попробуй вот: CS>>Про margin: *; я рассказал в... Z>Проблема в том что margin: * не работает в HTMLayout — выравнивает только по горизонтали. Z>В Sciter этот margin: * работает как надо и эффект с исчезанием картинки пропал... Z>Можно как-то по другому решить этот вопрос, чтобы работало и там и там?
Здравствуйте, zitz, Вы писали:
Z>Бага случается из-за того что я после загрузки SciterLoadHtml делаю SciterSetCSS Z>img:busy { background-image:none; background-color:transparent; min-width:1x; min-height:1px; border:0px; border-color:transparent; } Z>img:not(:busy):incomplete { background-image:none; background-color:transparent; min-width:1px; min-height:1px; border:0px; border-color:transparent; } Z>Убираю эти два стиля — падения прекращаются
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
CS>>Здравствуйте, zitz, Вы писали:
Z>>>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
CS>>Про SciterEval я уже сказал выше но на самом деле тебе и это не надо.
Z>Я не совсем понимаю... Можно скрипт в css запихнуть? Z>Или ты предлагаешь делать мне внешний файл и его скармлевать в Sciter через SciterEval? Z>Можно как то обойтись без создания файла и без нахлобучек ввиде фреймов? Требуется генерировать скрипт программно и сразу пихать его в Sciter?
SciterEval принимает на вход script to execute. Я не знаю как тебе объяснить еще.
Z>Например, есть SciterSetCSS — удобно, практично, прекрасно! Я могу сгенерировать стиль и сразу его применить, хочешь так крути, хочешь сяк... В одном случае то, во втором это, в третьем по другому. Можно на лету менять. Не надо ничего никуда сохранять во внешние файлы — красота. В этом случае тоже можно же сказать — это API убираем, пусть все грузят через include... Z>Если будет SciterSetScript то он даст такуюже свободу, тем более что с помощью скриптов можно расширить API которые не хочет возвращать разработчик
После загрузки DOM выполняется фактически это вот:
for each <script> in DOM
SciterEval ( text of that <script> element )
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, zitz, Вы писали:
Z>>Бага случается из-за того что я после загрузки SciterLoadHtml делаю SciterSetCSS Z>>img:busy { background-image:none; background-color:transparent; min-width:1x; min-height:1px; border:0px; border-color:transparent; } Z>>img:not(:busy):incomplete { background-image:none; background-color:transparent; min-width:1px; min-height:1px; border:0px; border-color:transparent; } Z>>Убираю эти два стиля — падения прекращаются
CS>Про <frame> я тебе уже сказал.
Можно ткнуть носом? Не совсем понимаю при чем тут frame...
Еще раз по шагам:
1. Шаг первый — грузим SciterLoadHtml с картинками, таблицами и пр., загрузка картинок запрещена или они не доступны по сети (проверял и так и так)
2. Шаг второй — вызываем функцию SciterSetCSS, куда передаем css с описанием img:busy и img:not(:busy):incomplete (описаны выше)
3. Шаг третий — в окне пытаемся проскроллить мышкой — падает в дебрях SCITER32.DLL
Я как-то не правильно использую SciterSetCSS? После её вызова надо ещё что-то сделать?
Я передаю в css стили различным элементам, падает только из-за img:busy и img:not(:busy):incomplete — комменчу эти два стиля — работает, раскомментирую — падает
Аналогично делаю в HTMLayout — сначала HTMLayoutLoadHtmlEx, потом HTMLayoutSetCSS — всё работает корректно
Здравствуйте, c-smile, Вы писали:
CS>Вообще-то SciterLoadFile() ожидает url. CS>Т.е. в случае файлов это что-то типа file://c:/..... CS>Давай URL по всем правилам и будет тебе шастя.
Хмм... Из документации это совершенно не следует.
Проблема в том что HTMLayoutLoadFile отрабатывает нормально, а для SciterLoadFile надо делать urlEncode...
Z>>В этом случае скрол всегда поверх текста отображается и WM_SIZE не спасает CS>Обрати внимание на table { width:* } CS>У тебя было table { width:100% } что engine и исполнял — 100% от ширины окна. Но без scrollbars. CS>Т.е. либо надо флексы использовать либо overflow-y:scroll, а не overflow-y:auto как у тебя. CS>Либо вообще overflow:scroll-indicator — он места не занимает.
Не помогает.
Багу можно повторить в sciter.exe — раскопируй тело у исходного html чтобы на экран не влезало и открой через load html in view.
CS>Забудь про проценты от размера view — они имеют другую семантику в desktop приложениях
Почему?
Я честно говоря не понимаю почему engine не учитывает scrollbars — во всех браузерах учитывает, в HTMLayout учитывает, а тут нет...
Браузер firefox — это desktop приложение? Все браузеры как то разруливают наличие скролбара и HTMLayout это тоже умеет, а тут нет...
Чем принципиально отличаются width:* и width:100%? Зачем делать неправильную обработку когда при парсинге можно привести 100% к *, а 50% к 0.5* и получится правильно
(в данном случае конечно это всё равно не помогает)
Z>>Проблема в том что margin: * не работает в HTMLayout — выравнивает только по горизонтали. Z>>В Sciter этот margin: * работает как надо и эффект с исчезанием картинки пропал... Z>>Можно как-то по другому решить этот вопрос, чтобы работало и там и там?
CS><picture> использовать. Это блочный элемент.
picture не отображает gif анимацию
Как-то можно заставить быть img блочным? Я так понимаю display: block; не работает...
Пробовал сделать так
Здравствуйте, c-smile, Вы писали:
CS>SciterEval принимает на вход script to execute. Я не знаю как тебе объяснить еще. CS>После загрузки DOM выполняется фактически это вот:
CS>
CS>for each <script> in DOM
CS> SciterEval ( text of that <script> element )
CS>
Здравствуйте, zitz, Вы писали:
Z>picture не отображает gif анимацию Z>Как-то можно заставить быть img блочным? Я так понимаю display: block; не работает...
Здравствуйте, zitz, Вы писали:
Z>Можно ткнуть носом? Не совсем понимаю при чем тут frame... Z>Еще раз по шагам: Z>1. Шаг первый — грузим SciterLoadHtml с картинками, таблицами и пр., загрузка картинок запрещена или они не доступны по сети (проверял и так и так) Z>2. Шаг второй — вызываем функцию SciterSetCSS, куда передаем css с описанием img:busy и img:not(:busy):incomplete (описаны выше) Z>3. Шаг третий — в окне пытаемся проскроллить мышкой — падает в дебрях SCITER32.DLL Z>Я как-то не правильно использую SciterSetCSS? После её вызова надо ещё что-то сделать? Z>Я передаю в css стили различным элементам, падает только из-за img:busy и img:not(:busy):incomplete — комменчу эти два стиля — работает, раскомментирую — падает
У меня нет под рукой проекта на проверить. На той неделе попробую что-то избразить.