How to force a page to reload if all what was changed in url is hash?

后端 未结 4 2166
没有蜡笔的小新
没有蜡笔的小新 2020-12-14 00:06

I am trying to reload current page with different url hash, but it doesn\'t work as expected.

(Clarification how I want it to work: Reload the page and then scroll t

4条回答
  •  攒了一身酷
    2020-12-14 00:34

    It should be expected that #foo will scroll to the anchor of the id, "foo". If you want to use approach #1 and have it reload, this approach might work.

    if (Object.defineProperty && Object.getOwnPropertyDescriptor) { // ES5
        var hashDescriptor = Object.getOwnPropertyDescriptor(location, "hash"),
        hashSetter = hashDescriptor.set;
        hashDescriptor.set = function (hash) {
            hashSetter.call(location, hash);
            location.reload(true);
        };
        Object.defineProperty(location, "hash", hashDescriptor);
    } else if (location.__lookupSetter__ && location.__defineSetter__) { // JS
        var hashSetter = location.__lookupSetter__("hash");
        location.__defineSetter__("hash", function (hash) {
            hashSetter.call(location, hash);
            location.reload(true)
        });
    }
    

提交回复
热议问题