相关疑难解决方法(0)

为什么不推荐使用Object.observe()

有替代方法吗?

还有另一种方法可以在对象中进行更改检测吗?

有代理方法,但任何人都可以告诉我如何使用代理实现这一点:

var obj = {
  foo: 0,
  bar: 1
};

Object.observe(obj, function(changes) {
  console.log(changes);
});

obj.baz = 2;
// [{name: 'baz', object: <obj>, type: 'add'}]

obj.foo = 'hello';
// [{name: 'foo', object: <obj>, type: 'update', oldValue: 0}]
Run Code Online (Sandbox Code Playgroud)

javascript

47
推荐指数
3
解决办法
2万
查看次数

单击锚点链接时,保持URL不受影响

我在这里检查了其他帖子,没有找到我正在寻找的结果.我想点击

<a href="#about">About</a>
<div id="about">Content of this..</div>
Run Code Online (Sandbox Code Playgroud)

并将其滚动到该元素,而不将www.domain.com/#about放在地址栏中

作为一个完美的例子,请查看我在这里找到的这个网站并点击一些链接 - 点击时不要更改地址栏.

html address-bar href

8
推荐指数
1
解决办法
1万
查看次数

检测 SPA 中的 URL 更改

我想听听不是我维护的 SPA 中的路径变化。

我在这里找到了一个解决方案:https : //stackoverflow.com/a/44819548/7042552

但是,对我来说似乎有点“hacky” - 但我的实现仍然是这样的:

let url = window.location.href;

['click','popstate', 'onload'].forEach( evt =>
        window.addEventListener(evt, function () {
            requestAnimationFrame(()=>{
                if (url !== location.href) {
                    // do stuff
                }
                url = location.href;
            });
        }, true)
    );
Run Code Online (Sandbox Code Playgroud)

是否有更好或更通用的方法来监听 SPA 中的页面加载?

javascript dom-events single-page-application

8
推荐指数
2
解决办法
2万
查看次数

如何使用 JavaScript 观察 URL 的变化?

Window 事件文档popstate说明:

请注意,仅调用history.pushState()or history.replaceState()不会触发popstate事件。该 popstate事件将通过执行浏览器操作触发,例如单击后退或前进按钮(或调用history.back()history.forward()在 JavaScript 中)。

我需要一种在 URL 更改时通过不触发popstate事件的方式(例如history.replaceState())来执行某些代码的方法。最好使用 MutationObserver API [1],并且绝对不要每 x 秒轮询一次 URL。

此外,hashchange不会这样做,因为我必须对URL 中的每个更改采取行动,而不仅仅是哈希部分。

那可能吗?


[1]在另一个问题上解释为什么 MutationObserver API 对此不起作用。


(其他)相关问题:

javascript events mutation-observers

4
推荐指数
1
解决办法
1286
查看次数