Как я обнаруживаю, если пользователь имеет к странице с помощью кнопки "Назад"?

Я не хочу красть гром Гордона здесь, потому что он сделал сложную роль.

Вот дополнительный бит , преобразующий NULL в «Первый раз».

create table #pivottabledata(Rownum int, PersonId int, Month int);
insert into #pivottabledata values(1,123,1);
insert into #pivottabledata values(2,123,2);
insert into #pivottabledata values(3,123,4);
insert into #pivottabledata values(4,123,5);
insert into #pivottabledata values(5,123,12);
insert into #pivottabledata values(1,222,1);
insert into #pivottabledata values(2,222,3);
insert into #pivottabledata values(3,222,4);
select * from #pivottabledata;
with cte (rownum,personid,month,diff) AS
(
select rownum, personid, month,
       (month -
        lag(month) over (partition by personid order by month)
       ) as diff
from #pivottabledata
)
SELECT rownum personid, month, 
       ISNULL(CAST(diff AS VARCHAR(max)), 'First Time') as diff
from cte;

86
задан Community 23 May 2017 в 12:26
поделиться

1 ответ

Как упоминалось выше, я нашел решение и размещаю его здесь для справки и обратной связи.

Первый этап решения состоит в том, чтобы добавить на страницу следующее:

<!-- at the top of the content page -->
<IFRAME id="page_is_fresh" src="fresh.html" style="display:none;"></IFRAME>
<SCRIPT style="text/javascript">
  function reload_stale_page() { location.reload(); }
</SCRIPT>

Содержимое fresh.html не имеет значения, поэтому следующего должно быть достаточно:

<!-- fresh.html -->
<HTML><BODY></BODY></HTML>

Когда код на стороне клиента обновляет страницу, он должен пометить модификация следующим образом:

function trigger_reload_if_user_clicks_back_button()
{
  // "dis-arm" the reload stale page function so it doesn't fire  
  // until the page is reloaded from the browser's cache
  window.reload_stale_page = function(){};

  // change the IFRAME to point to a page that will reload the 
  // page when it loads
  document.getElementById("page_is_fresh").src = "stale.html";
}

stale.html выполняет всю работу: После загрузки он вызовет функцию reload_stale_page , которая при необходимости обновит страницу. При первой загрузке (т.е. после внесения изменений функция reload_stale_page ничего не сделает.)

<!-- stale.html -->
<HTML><BODY>
<SCRIPT type="text/javascript">window.parent.reload_stale_page();</SCRIPT>
</BODY></HTML>

Судя по моему (минимальному) тестированию на этом этапе, похоже, что это работает должным образом. Я что-нибудь пропустил?

2
ответ дан 24 November 2019 в 08:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: