Создание истории Javascript как объекта в Coldfusion - PullRequest
0 голосов
/ 05 января 2010

Я хочу создать объект истории для моего веб-сайта, он должен быть похож на объект истории Javascript.

Я хочу использовать этот объект для создания предыдущих / последующих навигационных ссылок для моего веб-сайта. Проблема с объектом истории Javascript заключается в том, что он основан на объекте Window, а не на конкретном веб-сайте. А использование этого объекта при нажатии на ссылку «Prvious» может привести к выходу из моего веб-сайта.

Каким должен быть лучший способ создания объекта истории в Coldfusion?

Ответы [ 3 ]

2 голосов
/ 05 января 2010

Глядя на глобальный вопрос, который звучит так: «Как я могу сделать пользовательский серфинг моим сайтом лучше?» Я могу три важных ответа:

  1. Очевидная навигация или главное меню. Особенно, когда там много ссылок. Решения могут различаться: простые ссылки, вкладки, раскрывающиеся меню и т. Д.
  2. Использование панировочных сухарей . Люди должны иметь возможность подняться на уровень выше (хотя это не всегда действие «Назад»).
  3. История. Внедрение пользовательской истории может быть полезным, например, для интернет-магазина, - чтобы показать ранее просмотренные вещи надежным и удобным способом.

Обратите внимание, что история - это задача № 3, а не 1 или 2. Причина объяснения всего этого заключается в том, что ваша история не должна служить для № 1 (определенно) и № 2 (иногда может быть) .

По сути, история может храниться двумя способами: только для текущего сеанса (для любого пользователя) и между сеансами (обычно для зарегистрированных пользователей).

Самый простой способ реализовать первый способ - это использовать сеансы ColdFusion. При создании сессии (onSessionStart () при использовании Application.cfc) инициализируйте контейнер, я бы использовал массив.

Рассмотрим следующие образцы:

<cfscript>
    session.history = [];
</cfscript>

Когда пользователь открывает новую страницу (даже в новой вкладке - которая запускает новую историю браузера) - поместите информацию о странице в контейнер ( страница должна содержать как минимум ссылку и вид метки):

<cfscript>
    page = {};
    page.link = "/index.cfm?product=100";
    page.label = "Product Foo";
    ArrayAppend(session.history, page);
</cfscript>

Наконец, где-то в шаблоне страницы обведите этот массив и отобразите ссылки:

<cfloop array="#session.history#" index="page">
    <div><a href="#page.link#">#HTMLEditFormat(page.label)#</a></div>
</cfloop>

Очевидно, что если вы хотите показать ссылки «Предыдущая / Следующая», вам следует изменить способ хранения истории, возможно, сохранить текущую позицию страницы (в массиве) - чтобы выбрать предыдущий и следующий элементы. Хотя как Пользователь я не нашел бы такую ​​функцию очень полезной.

Наконец, если вы хотите сохранить историю между сеансами, просто запишите этот набор данных в базу данных, идентифицированную по идентификатору пользователя (fk), и восстановите ее, когда пользователь войдет в систему.

Пожалуйста, помните, что настоятельно рекомендуется использовать блокировку при чтении / записи.

0 голосов
/ 05 января 2010

Используете ли вы ссылку / кнопку на своем сайте, чтобы действовать как кнопка возврата?

Если это так, вы можете использовать javascript, чтобы скрыть ссылку «Предыдущая» на вашем сайте, если history-1 не содержит вашего доменного имени.

edit - вы не можете использовать объект истории из-за безопасности, но вы можете использовать document.referrer.

<head>
<script language="javascript">
    function showBackLink(){
        var ref = document.referrer;
        var fromThisDomain = ref.indexOf("yourdomain.com");
        if(fromThisDomain > 0){ // your domain was found, show the link
            document.getElementById("backLink").style.display = "";
        }else{ // your domain was not found, hide the link
            document.getElementById("backLink").style.display = "none";
        }
    }
</script>
</head>


<body onload="showBackLink();">
<a ID = "backLink" href  = "javascript: history.go(-1);">prev</a>

</body>
0 голосов
/ 05 января 2010

Предотвращение ухода людей с вашего сайта - хромая и раздражающая вещь. У тебя есть веская причина для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...