2012-01-23 3 views
3

При запуске приложения GWT в режиме размещения обычно требуется добавить местоположение сервера кода в параметр строки запроса, например, вместо index.html, возможно, необходимо открыть index.html?gwt.codesvr=127.0.0.1:9997. Проблема заключается в том, что gwt.codesvr обычно не включается в гиперссылки, поэтому его необходимо добавить вручную. Добавление его ко всем ссылкам в вашем приложении не кажется хорошей идеей, так как это помешает окончательной компиляции GWT. Другой вариант заключается в том, что для index.html для самоанализа JavaScript и добавления значения по умолчанию gwt.codesvr в window.location, но это должно быть сделано только после того, как приложение уверено, что оно не было скомпилировано, то есть после предупреждения GWT module may need to be (re)compiled. Идеальное решение, по-моему, было бы для GWT, чтобы позволить настраивать действие, которое оно делает после того, как оно не найдет никаких перестановок для выбора. Действие по умолчанию заключается в том, чтобы показывать только предупреждение о предупреждении, но, к сожалению, это не настраивается.Как автоматически добавить gwt.codesvr на URL-адрес страницы

Так что мой вопрос в том, что это лучший способ автоматически открыть текущую страницу по умолчанию gwt.codesvr, когда нет скомпилированных перестановок.

ответ

2

Поскольку я все время занимаюсь «Местами», я обновил букмарклет, чтобы иметь дело с «#».

javascript:(function(){h="localhost";p="9997";l="gwt.codesvr="+h+":"+p;s=false;if(document.location.href.indexOf("gwt.codesvr")<0){q=document.location.href.indexOf("?");if(q<0){q=document.location.href.indexOf("#");if(q>0){q=q-1}s=true}if(q<0&&!s){document.location.href=document.location.href+"?"+l}else%20if(q>=0&&!s){b=document.location.href.substr(0,q+1);e=document.location.href.substr(q+1);document.location.href=b+l+"&"+e}else{b=document.location.href.substr(0,q+1);if(q<0){e=""}else{e=document.location.href.substr(q+1)}document.location.href=b+"?"+l+e}}})(); 

Update 2/7/2017- Там была опечатка в скрипте. Исправлено.

+0

В вашем Javascript есть ошибка. Можете ли вы проверить, правильно ли вы скопировали его? – 11101101b

+0

Ницца, теперь он работает как шарм! Лучший букмарклет! – 11101101b

0

Поскольку вы будете использовать этот url только для разработки (и, возможно, несколько раз для удаленной отладки), просто зайдите в закладку http://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997 (или любой другой порт, который вы используете).

+0

Я не думаю, что ваше решение сильно отличается от добавления gwt.codesvr вручную. Конечно, всегда можно пометить любую ссылку. Кроме того, я могу думать о ситуациях, когда это не так полезно, например, когда index.html загружается как iframe .... – Saintali

+0

вы просто набираете этот URL один раз, чтобы запустить приложение, нет необходимости изменять какую-либо ссылку в ваше приложение для поддержки codrv – milan

+1

Наиболее частый случай: у вас есть выход из системы в верхней части страницы. Он делает HTTP-запрос для некоторого URL-адреса выхода из системы, а затем перенаправляется на index.html. поскольку index.html безопасен, вы перенаправляетесь на страницу входа в систему, и после входа в систему вы можете увидеть index.html. Это второй раз, когда вы здесь, в index.html, но на этот раз с параметром gwt.codesvr разделил – Saintali

5

Я сделал букмарклет, что я нажимаю отлаживать текущую страницу:

javascript:window.location+=(window.location.href.indexOf('?')==-1?"?":"&")+"gwt.codesvr=localhost:9997" 

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

Возможно, стоит отметить, что это можно использовать даже с производственным сервером, если у вас примерно такой же клиентский код локально, что этот сервер был Бег.

+0

звучит неплохо. – Saintali