【问题标题】:How to remove a second hash added by the user?如何删除用户添加的第二个哈希?
【发布时间】:2011-12-27 12:28:27
【问题描述】:

我在我的 URL 中使用了很多哈希来显示消息和内容,但是我遇到了一个问题。点击对话阅读就可以了:

但是,看看当用户在末尾附加另一个哈希时会发生什么:(主题消失了,因为 JavaScript 被混淆了)

(点击图片查看大图)

我怎样才能删除第二个散列如果有一个?我之前在 Gmail 中这样做过,它会自动删除它们。那么,我怎样才能用我的系统做到这一点呢?这是我的哈希码:

if (window.location.hash) {
    var messageID = window.location.hash.replace('#!/message/', '');
    var msgSubject = $('#subject_' + messageID).text();
    //the below code checks if conversation exists
    $.get('tools.php?type=id_check&id=' + messageID, function(data) {
        if (data == 'true') {
            setTimeout(function() {
                readMessage(messageID, msgSubject);
            }, 200);
        }
        else {
            alertBox('The requested conversation does not exist.', 2500);
            window.location = '#';
        }
    });
}

提前致谢!

【问题讨论】:

    标签: javascript jquery hash


    【解决方案1】:

    你可以试试

    var matches = window.location.hash.match(/#!\/message\/(\d+)/);
    if (matches) {
        var messageId = matches[1];
        // ...
    }
    

    这将捕获#!/message/ 之后的一系列数字。如果哈希包含#!/message/123,那么matches 将是一个数组

    ['#!/message/123', '123']
    

    所以matches[1] 将包含消息ID。如果在哈希之前或之后有任何内容,它将被忽略。如果没有匹配项,matches 将是 null

    【讨论】:

    • 酷,谢谢。 matches[1] 会返回散列中的 ID 吗?而且,它会删除额外的哈希还是只保留它?对不起,如果你认为我的意思是我宁愿它什么都不做。我将编辑我的问题,如果它还没有,它会更有意义。
    • 啊,太好了,谢谢!我对正则表达式一无所知......我很难理解它们。我试过这样做:if(hash.match('message') { 但这不起作用,可能是因为你也需要其中的符号,而不仅仅是单词,对吗?
    • @Nathan .match() 也可以只使用字符串,但在大多数情况下,使用 .indexOf() 更好。上面正则表达式中的括号捕获了一系列 + 的数字 \d,因此您可以使用 id。
    • 哦,好吧。感谢您今天的帮助。 :)
    • 等等,我认为.match(/#!message\/(\d+)/); 不太正确,因为我的哈希值是#!/message/55837,但正则表达式在“消息”一词之前没有斜线。我如何添加它?没有它就行不通,看起来……
    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 2023-03-17
    • 2019-07-04
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多