【问题标题】:how do i block jquery.address from changing the url in certain situations在某些情况下如何阻止 jquery.address 更改 url
【发布时间】:2011-07-10 20:20:44
【问题描述】:

我使用 jquery.address,这是一个插件,用于在拥有大量 ajax 网站时执行浏览器历史状态。 但是,在某些情况下,链接会触发 $.address.change() 函数,这应该被阻止。

例如,当有一个导航时,其中 1 个元素是当前页面, 我不希望它重新加载当前页面,而是阻止更改事件的发生。

在 $.address.change() 函数中,我当然可以检查这是否是当前页面,然后返回,但我仍然看到浏览器地址栏中的地址发生了变化。

这比重新加载页面更错误,因为现在它向用户显示了带有错误 url 的当前页面。

所以如果有人知道如何阻止 jquery.address 更改 url,例如当链接上有“当前”类时?

最好的问候 桑德·豪特基尔

【问题讨论】:

    标签: jquery ajax jquery-address


    【解决方案1】:

    我会对链接使用点击处理程序以及状态跟踪变量m_pagem_currentFoo 等,然后在更改地址之前放入 if 语句检查链接是否对应于当前状态。

    这是他们 API 页面中的第一个代码示例:

    $.address.change(function(event) {
        // do something depending on the event.value property, e.g.
        // $('#content').load(event.value + '.xml');
    });
    $('a').click(function() {
        $.address.value($(this).attr('href'));
    });
    

    还有一些修改:

    //This is called when the address is changed due to navigation.
    $.address.change(function(event) {
        // do something depending on the event.value property, e.g.
        // $('#content').load(event.value + '.xml');
    });
    
    //This is your click handler
    $('a').click(function() {
        //Do any logic for choosing what happens with the address here.
        if(moon = newMoon) {
            $.address.value($(this).attr('href'));
        }
    });
    

    【讨论】:

    • 但我没有更改地址的权力... jquery.address 插件可以做到这一点。我可以阻止它在那里做任何事情,但它确实已经改变了地址栏中的 url。点击事件会相当困难,我可以但不知道这将是什么性能影响,如果我必须遍历页面中的所有锚点,以检查它们是否是当前状态并绑定点击以防止它不会走得更远。
    • @Sander 查看更新后的答案。这是否更好地解释它? :)
    • aha 好的,是的,我现在这样做了,问题是我在很多元素上一起调用地址,而不是在每次点击时手动...很多内容都是用 ajax 加载的,我经常更新所有新加载的元素都像这样 $('a.ajax', container).address(); (有更多的参数,但这只是为了给出想法)我可能需要将其更改为个人设置,然后我相信......
    • 我认为您需要将它们分开。对于不同类型的链接,我有不同的处理程序,我无法以任何其他方式做到这一点。对于某些类型的链接,我使用 url autoUpdate,对于其他类型的链接,我通过几个步骤构建 url。
    • 感谢所有的输入,我会确保在未来的项目中花更多的时间来处理这些东西 :) 因为一旦它变得复杂,你需要像你说的那样开始做,每个自定义处理程序链接类型。我没有预见到,感谢您的意见!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多