Использование JavaScript для изменения URL, используемого при закладке страницы - PullRequest
2 голосов
/ 01 апреля 2009

JavaScript не позволяет обновлять window.location без запуска перезагрузки. Хотя я согласен с этой политикой в ​​принципе (не должно быть возможности посещать мой веб-сайт и JavaScript должен изменить строку адреса на www.yourbankingsite.com,), я считаю, что можно изменить www.foo.org/index на www.foo.org/help.

Единственная причина, по которой я забочусь об этом - это закладки. Я работаю в браузере фотографий, и когда пользователь просматривает конкретное изображение, я хочу, чтобы это изображение было по умолчанию, если они должны добавить эту страницу в закладки. Например, если они просматривают foo.org/preview/images0-30 и нажимают на изображение # 15, это изображение расширяется до вида среднего размера. Если они затем добавят страницу в закладки, я хочу, чтобы URL закладки был foo.org/preview/images0-30/active15.

Есть какие-нибудь мысли, или на этом тоже есть защитный барьер? Я, конечно, могу понять ту же политику, которая применяется здесь, но можно мечтать.

Ответы [ 6 ]

4 голосов
/ 01 апреля 2009

Похоже, вы должны проверить Действительно простая история . Именно так Google (например, Gmail) позволяет любой странице быть добавленной в закладки (и имеет историю), но не обновляет всю страницу.

Что касается другой стороны (когда люди посещают ваш сайт, а затем автоматически выкладывают правильное изображение), я бы попробовал проверить window.location.hash после загрузки страницы и инициировать события на что.

1 голос
/ 01 апреля 2009

Как уже упоминалось, обычно на сайтах ajaxy вы манипулируете / проверяете хэш-часть URL (window.location.hash), чтобы определить этот вид активности.

Самой большой проблемой является проверка на хеш в DOM-ready / window-load, как если бы пользователь щелкнул по данному изображению. Это будет работать с браузерами и закладками, но может затруднить индексацию поиска.

1 голос
/ 01 апреля 2009

Вы можете добавить привязку к URL-адресу, не перезагружая страницу, и получить его с помощью JavaScript:

location.href = '.../#' + imageId;
0 голосов
/ 12 марта 2010
<html>

<head>
<script type="text/javascript">
function myHref(){
    document.getElementById('myAnchor').innerHTML="Visit Google"
    document.getElementById('myAnchor').href="http://www.google.com"
}
</script>
</head>

<body>
    <a id="myAnchor" href="http://www.java2s.com">Visit Java2s</a>
    <form>
        <input type="button" onclick="myHref()" value="Change URL and text">
    </form>
</body>

</html>
0 голосов
/ 01 апреля 2009

Как насчет определения загрузки страницы, если URL-адрес содержит хеш, и, если она есть, перенаправления их на страницу, на которую вы хотите, чтобы они переходили?

0 голосов
/ 01 апреля 2009

Вы можете добавить кнопку <strong>[Add to Favorites]</strong> на страницу.

Пример:

var urlAddress = "http://www.example.com/#image1";
var pageName = "Example Page Title - Image1";
function addToFavorites() {
    if (window.external) {
        window.external.AddFavorite(urlAddress, pageName); 
    } else {
        alert("Sorry! Your browser doesn't support this function."); 
    }
}

Или используйте один из следующих плагинов jQuery:

И / ИЛИ

Используйте URL с хешем в конце и загружайте контент (изображения и т. Д.) На основе этого значения хеша.

function onLoad() {
    if (window.location.hash == "image1") {
        // load image1
    }
}

Существует также множество плагинов jQuery для работы с событиями хэша URL, например:

Для этого есть также много JavaScript-библиотек, не относящихся к jQuery, например:

...