使用JavaScript更改页面被书签时使用的URL

3

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
听起来你应该查看Really Simple History。例如,Google的Gmail如何使任何页面都可以被收藏夹保存(并具有历史记录),但不刷新整个页面。
至于另一方面(让人们访问您的网站然后自动弹出正确的图像),我建议在页面加载时检查window.location.hash,并根据此触发事件。

1

您可以在不重新加载页面的情况下向URL添加锚点,并使用JavaScript获取它:

location.href = '.../#' + imageId;

1

如上所述,通常情况下,在ajaxy网站中,您需要操纵/检查URL的哈希部分(window.location.hash)来确定这种类型的活动。

最大的问题是确保在DOM-ready/window-load时检查哈希,因为如果用户单击了给定的图像,则会发生这种情况。 这适用于浏览器和书签,但可能妨碍搜索索引。


0
<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

您可以在页面上添加   [添加到收藏夹]   按钮。

示例:

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插件:

AND / OR

使用带有哈希值的URL,并根据该哈希值加载您的内容(图像等)。

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

还有很多用于处理URL哈希事件的jQuery插件,例如:

此外,还有许多非jQuery的JavaScript库可供使用,例如:


0
如何在页面加载时检测URL是否包含哈希值,如果有,则将用户重定向到您想要的页面?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接