微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bookmarklet 在 Opera 中运行良好,但在 Firefox 中运行时,我得到非常奇怪的结果

如何解决Bookmarklet 在 Opera 中运行良好,但在 Firefox 中运行时,我得到非常奇怪的结果

我写了这个书签:

javascript:var b = document.createElement("button");b.innerHTML = "Scroll to current video";b.addEventListener("click",() => doItYesly());b.style.position  = "fixed";b.style.left = 0;b.style.top = 0;b.style.zIndex = "99999999";document.body.prepend(b);var s = document.createElement("button");s.style.position  = "fixed";s.style.left = 0;s.style.top = "50px";s.style.zIndex = "99999999";s.innerHTML = "Set";s.addEventListener("click",() => localStorage.setItem("scrolldistanceforosautoscroller",window.scrollY));document.body.prepend(s);function doItYesly(){let inter = setInterval(() => {scrollTo(0,parseInt(localStorage.getItem("scrolldistanceforosautoscroller")));if(window.scrollY === parseInt(localStorage.getItem("scrolldistanceforosautoscroller"))){clearInterval(inter);}},100);}window

基本上,它是一个小书签,允许用户自动滚动到 YouTube 上一长串视频中的特定点。我是为我的一个朋友写的,他一遍又一遍地导航到同一页面,他想尝试节省一些时间,并防止每次他想返回完全相同的位置时都必须手动滚动所有视频。

当我在浏览器(我使用 Opera)中单击此书签时,它工作正常。当我在 Firefox 中打开同一个书签(他使用 Firefox)时,它会将我重定向一个页面,上面写着“此页面托管在您的计算机上”,并且只显示 [object Window]。这是因为,在 Opera 中,当我运行我的代码时,它会打印出“输入滚动距离”,因为最后一个表达式的计算结果是。为了解决这个问题,我只是指向 window 对象,导致最终表达式计算页面本身。这解决了 Opera 的问题,但对于 Firefox 并没有解决问题......它不像往常那样只是渲染页面,它只是输出 window 对象的文本表示......

有什么办法可以解决这个问题吗?我认为这是出于安全考虑,如果是这样,那么可能没有解决方法......但也许我可以做些什么来让 Firefox 停止这种行为?

当我从开发控制台运行完全相同的代码时,它按预期完美运行,只有当我将其保存为书签并单击它时才会出现问题。有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。