0

如何在不强制用户写入的情况下/在末尾添加字符?URL我开始像这个美妙的网站SWFAddress一样使用JavaScriptjQuery直接(不使用) 。Flash

所以是这样的:

http://mysite.com/section

// and after click to a specific <a ="#">button</a> get
http://mysite.com/section/#/sub-content

// instead of
http://mysite.com/section#/sub-content

我已经开始使用这段代码来做到这一点:

$(".time_dot, .time_year").click (function () {
    onClickEvent (this);
});

function onClickEvent (dom) {
    var timer = setTimeout (function () {
        SWFAddress.setValue($(dom).parent().attr("id"));
    }, 200);
    // do something else 
}

setTimeout方法用于避免<a>按钮覆盖该SWFAddress.setValue方法,但我不知道如何将 to更改URL address为.url.com/content#/...url.com/content/#/...

我怎样才能做到这一点?

4

4 回答 4

2

如前所述,您不能在不强制重新加载站点的情况下更改 URL。我不认为你想要那个。(但这取决于SWFAddress.setValue()实际工作方式,如果它只是在内部跟踪 URL(不更改浏览器 URL),那么你可以这样做)

但我想给你一个替代方案setTimeout

$(".time_dot, .time_year").click (function (event) {
    event.preventDefault();
    event.stopPropagation();
    onClickEvent (this);
});

function onClickEvent (dom) {
    SWFAddress.setValue($(dom).parent().attr("id"));
    // do something else 
}

有了这个,你可以防止点击事件冒泡,也可以防止更改默认操作(将跟随链接)。

请参阅jQuery 事件对象

于 2010-12-14T20:49:13.993 回答
1

如果不重新加载页面,您将无法更改 URL 的“路径”部分。因此,如果您位于http://mysite.com/section,则无法在不重新加载页面的情况下导航到http://mysite.com/section/#/sub-content

于 2010-12-14T20:45:26.703 回答
0

你的意思是喜欢

$(".time_dot, .time_year").click (function () {
   setTimeout (function () {
         SWFAddress.setValue("/"+$(this).parent().attr("id")+"/");
    }, 200);

});
于 2010-12-14T20:45:41.653 回答
0
function fixUrl(url) {  
    return url.replace(/\/?$/,'/');  
}

//or

function fixUrl(url) {  
    return url.match(/\/$/)  
       ? url  
       : url + '/';  
}
于 2010-12-14T20:46:44.887 回答