:: Visual Foxpro, Foxpro for DOS
Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
Добрый день!
Можно ли в Web-контроле (допустимый вариант - в тексте html, который размещается в нем) запретить возврат на предыдущую страницу по Backspace (контекстное меню отключаю в самом HTML-коде -> <BODY oncontextmenu="return false">)?
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Угу и заварить у автомобиля левую дверцу для безопасности. Думаю, что можно перехватывать сообщения окну и бэкспейсы просто не пропускать, в крайнем случае.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Через Implements думаю можно сделать тока сам не пробовал - пример городить лениво


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Piva, да просто через bindevents().


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Изобрази как это через bindevents - заинтриговал


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
Спасибо, интересовала сама возможность. Буду искать.

Похоже, связано с этим:
forum.foxclub.ru
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
В найденном примере на странице
forum.foxclub.ru
нажатие на Backspace вообще не фиксируется (другие кнопки - без проблем)


Form Init
SET PROCEDURE TO cls_hde ADDITIVE
this.newobject('oHTMLDocumentEvents','HTMLDocumentEvents')
EVENTHANDLER(thisform.wb.Document , ThisForm.oHTMLDocumentEvents)

Процедура cls_hde
DEFINE CLASS HTMLDocumentEvents AS session OLEPUBLIC
IMPLEMENTS HTMLDocumentEvents2 IN "c:\windows\system32\mshtml.tlb"
...
PROCEDURE HTMLDocumentEvents2_onkeypress(pEvtObj AS VARIANT) AS LOGICAL
WAIT WINDOW "! "+STR(pEvtObj.KeyCode)
ENDPROC
...
ENDDEFINE
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Да что-то лень чертить... C мышью так было:
DECLARE integer SendMessage IN WIN32API integer hwnd , integer MESSAGE, integer param1, integer param2
BINDEVENT(Thisform.Ole1.hWnd, WM_MOUSEMOVE, Thisform, 'StopBS')
* StopBS
LPARAMETERS hWnd, nXX, nButton, nXY
IF nButton <> 1
SendMessage(Thisform.HWnd,WM_MOUSEMOVE,nButton,nXY) && отдаем обработку окну
ELSE
This.OnMoveLKM && выполняем свою обработку
ENDIF

Думаю, в таком же духе можно и нажатие кнопок сделать.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
Так и не смог приспособить предложенный пример для запрета возврата на предыдущую страницу.

Влад Колосов
Да что-то лень чертить... C мышью так было:
DECLARE integer SendMessage IN WIN32API integer hwnd , integer MESSAGE, integer param1, integer param2
BINDEVENT(Thisform.Ole1.hWnd, WM_MOUSEMOVE, Thisform, 'StopBS')
* StopBS
LPARAMETERS hWnd, nXX, nButton, nXY
IF nButton <> 1
SendMessage(Thisform.HWnd,WM_MOUSEMOVE,nButton,nXY) && отдаем обработку окну
ELSE
This.OnMoveLKM && выполняем свою обработку
ENDIF

Думаю, в таком же духе можно и нажатие кнопок сделать.

Делаю проект с использованием интерфейса, построенного на html, а в нем крайне важно заблокировать данную возможность.

Может есть вариант удаления истории посещений (тогда и возвращаться некуда)?
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
Ну раз средствами FoxPro решить проблему не удастся...
Вариант следующий:
Разместить необходимый код javascript в body html-файла (найдено в Интернете:
blog.gramant.ru
)

<BODY oncontextmenu="return false">
.................
<script type="text/javascript">

var bsp = false;

function checkButton() {
if (!bsp) {
if(event.keyCode==8) {
return false;
}
}
}

document.body.onkeydown = checkButton;
.................
</script>


НО!
Еще остается Alt+Стрелка влево - такая комбинация тоже отправляет на предыдущую страницу
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
А что с примером не то? Он хоть был допилен?


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
Нет. Есть один нюанс - кнопка Backspace ДОЛЖНА работать при редактировании поля input (например, text - многострочный текст в HTML).

Что бы разрешить - нужно дописать в тег input соответствующий тег:
<input type="text" onfocus="bsp=true;" onblur="bsp=false;">
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
maple4
Еще остается Alt+Стрелка влево - такая комбинация тоже отправляет на предыдущую страницу

Ну так если с кодом для Backspace все проходит, то и с комбинацией можно аналогично дописать. Код нажатия можно узнать хоть из фокса, с помощью например ричтекстбокса. Там наглядно видно, что код Backspace =8, а для стрелки влево =37, плюс с нажатием Alt - дополнительный шифт-параметр =4.
Хотя вернуться на предыдущую страницу можно еще и по нажатию дополнительной кнопки на мышке. Поскольку на многих современных моделях мышек есть дополнительные кнопки листания вперед и назад. Кроме того могут быть и медиа-кнопки на некоторых моделях клавиатуры, среди которых тоже есть аналогичное листание, помимо обычного Backspace.
Так что похоже это решение не совсем универсальное.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 25.10.10 11:23
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
Вот так решается с Alt... но опять не совсем правильно
Alt+влево все-таки срабатывает при нахождении в поле <input> или <textarea>

<script type="text/javascript">
var bsp = false;
function checkButton() {
if (!bsp) {
if(event.altKey || event.keyCode==8) {
return false;
}
}
}
document.body.onkeydown = checkButton;
</script>

пока хотелось бы "закрыть" хотя бы только Backspace и Alt+влево



Исправлено 1 раз(а). Последнее : maple4, 25.10.10 18:20
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Я наверное туплю, но на кой все эти пляски с бубном, если в BeforeNavigate2 всё и так видно, и есть возможность заблокировать переход... Или речь не про Web Browser контрол на фоксовой форме?
Или ты не можешь отслежить переходы? Или задача состоит в том, чтобы по ссылке на странице page2 можно было пойти на page1, а по кнопке BACK (если пришли как раз с первой) нельзя? (Странное требование, мягко говоря).


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
Речь идет про Web Browser контрол на фоксовой форме.

Цитата:
Или задача состоит в том, чтобы по ссылке на странице page2 можно было пойти на page1, а по кнопке BACK (если пришли как раз с первой) нельзя?

Требуется как раз именно это.
К сожалению, я не могу в BeforeNavigate2 определить, открывалась ли страница по ссылке или Backspace-ом (Alt-влево).
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Это неестественное поведение для любого браузера.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.




Исправлено 1 раз(а). Последнее : Влад Колосов, 26.10.10 14:02
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Согласен с Владом, требование специфическое. Под такое только и писать что-то свое.

В приведенном же коде мне кажется что-то перепутано с кодами:

maple4
Вот так решается с Alt... но опять не совсем правильно
Alt+влево все-таки срабатывает при нахождении в поле <input> или <textarea>

<script type="text/javascript">
var bsp = false;
function checkButton() {
if (!bsp) {
if(event.altKey || event.keyCode==8) {
return false;
}
}
}
document.body.onkeydown = checkButton;
</script>

пока хотелось бы "закрыть" хотя бы только Backspace и Alt+влево

Разве выделенный кусок соответствует условию "Backspace или Alt+влево"?
Если учесть, что код Backspace = 8. ;)


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата регистрации: 26.10.2007
Тоже согласен, но я ж не браузер пишу

в примере:
event.altKey - нажатие кнопки Alt (ну и, попутно, Alt+влево)
Ratings: 0 negative/0 positive
Re: Запрет возврата на предыдущую страницу в web-контроле
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
maple4
Тоже согласен, но я ж не браузер пишу
А придется с таким индпошивом


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 19 (Гостей: 19)

© 2000-2024 Fox Club 
Яндекс.Метрика