我想从Google Map事件中创建一个RxJS可观察流.我知道如何从本机浏览器事件中执行此操作,如下所示:
var result = document.getElementById('result');
var source = Rx.Observable.fromEvent(document, 'mousemove');
var subscription = source.subscribe(function (e) {
result.innerHTML = e.clientX + ', ' + e.clientY;
});
Run Code Online (Sandbox Code Playgroud)
这mousemove
是一个浏览器事件,这使我相信它.fromEvent()
被识别mousemove
为硬编码的默认值.但是,如果我想识别自定义事件,我该如何创建可观察的流?以Google地图为例:
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: {lat: -25.363, lng: 131.044}
});
map.addListener('center_changed', function() {
var center = map.getCenter()
console.log(center)
});
Run Code Online (Sandbox Code Playgroud)
我想将这些谷歌地图事件转换为可观察流的原因是我可以使用RxJS debounce
来提高性能.这种方式center_changed
只能在批量中识别(而不是在2秒内发射10倍,它只能在同样的2秒内识别最后1x).我的困境是将自定义Google Maps事件转换为可观察的流.也许有一种简单的方法可以不断添加到一个可观察的,但从我的搜索中我还没有发现如何做到这一点.
感谢您在这件事上的时间和帮助!对此,我真的非常感激!
我有一个聊天窗口小部件,我想将其嵌入其他人的网站。看起来就像对讲机和所有其他聊天弹出窗口。无论滚动到何处,我都希望使聊天弹出窗口停留在屏幕的右下角。但是,当我将聊天应用程序导入为iframe并提供给iframe时position: fixed; bottom: 0px; right: 15px;
,iframe不会到达我期望的位置。
我意识到iframe对于嵌入式JS小部件而言不是最佳选择,所有最好的嵌入式应用程序都从文件存储中导入.js文件。在网上搜索了几个小时之后,我还没有找到关于如何制作那些挂接到a并呈现小部件的JS文件的解释/教程。您甚至怎么做那些纯JavaScript应用之一,它们又叫什么?(我假设不是Web组件,因为已经有很长时间的小部件了)。
抱歉,这个问题有点儿菜鸟。在我自己尝试实现之前,我从来不知道这是一回事。任何人都可以向我指出如何开始制作JS网络小部件的正确方向?谢谢!(也许ReactJS到VanillaJS转换器会超级酷)