我正在使用https://github.com/iamdustan/smoothscroll包来支持Safari中的平滑滚动。
我跟踪了doc和NextJS文档并创建了一个自定义应用程序,在其中导入了polyfill导入:
在_app.js
:import smoothscroll from 'smoothscroll-polyfill'; // at the top level
中
if (typeof window !== "undefined") {
console.log('polyfilled');
smoothscroll.polyfill();
window.__forceSmoothScrollPolyfill__ = true;
}
我可以看到打印语句被记录下来,但是平滑的滚动仍然不能工作。
下面是在Chrome中工作的滚动片段:
element.scrollTo({
left: 200,
behavior: "smooth"
});
我在这里做错什么了?在NextJS应用程序中,我能做些什么才能在Safari中顺利滚动?!
发布于 2022-01-21 14:15:09
在if (typeof window !== "undefined")
语句中,您似乎要在undefined
周围添加引号,所以您要检查window
是否等于字符串"undefined"
,而字符串"undefined"
总是正确的。
你把多填充语句放哪儿了?
把它放在useEffect
in _app.js
中,对我来说就像一种魅力。:-)
// _app.js
import { polyfill } from 'smoothscroll-polyfill';
function App(...
useEffect(() => {
polyfill();
},[])
另外,请注意,他们建议不要强制使用window.__forceSmoothScrollPolyfill__ = true;
语句填充多数点,因此,如果没有必要,删除它可能是理想的。
https://stackoverflow.com/questions/69805586
复制